#概要
アセンブラからcの関数、呼び出して見た。
x64で、やって見た。
#サンプルコード
import subprocess
import os
def gcc():
s_file = 'main.s'
test_s = """
.code64
.global main
.text
main:
call test
mov $message, %rdi
call puts
ret
.data
message:
.asciz "world!"
"""
with open(s_file, 'w') as f:
f.write(test_s)
c_file = 'test.c'
test_c = """
#include <stdio.h>
void test()
{
printf("hello ");
}
"""
with open(c_file, 'w') as f:
f.write(test_c)
os.system("gcc -no-pie test.c main.s")
os.system("./a.out")
if __name__ == '__main__':
gcc()
#成果物
以上。