#概要
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()
#成果物
以上。