1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

paizaでアセンブラ その4

Last updated at Posted at 2018-12-06

#概要

paizaでアセンブラ、やってみた。
gas調べたら、printf使えた。

#サンプルコード
1から100を表示

import subprocess
import os

def gcc():
    c_file = 'test.s'
    test_c = """
.code64
.text
.global main

main:
	sub 	$8, %rsp
	mov 	$1, %r8
loop:
	mov 	$0, %r10
	mov 	$0, %rdx
	mov 	%r8, %rax
	lea 	mat(%rip), %rdi
	mov 	$1, %rax
	mov 	%r8, %rsi
	push 	%r8
	push 	%r10
	call 	printf
	pop 	%r10
	pop 	%r8
	add 	$1, %r8
	cmp 	$101, %r8
	jne 	loop
	add 	$8, %rsp
	ret
.data
mat:
	.asciz "%i "
"""
    with open(c_file, 'w') as f:
        f.write(test_c)
    os.system("gcc -no-pie %s" % c_file)
    result = subprocess.Popen('./a.out', stdout = subprocess.PIPE).communicate()[0]
    for i, v in enumerate(result[ : -1].split('\n')):
        print v

if __name__ == '__main__':
  gcc()
  

#成果物

以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?