LoginSignup
1
0

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