我尝试制作一些简单的汇编代码,用汇编打印出一个数字。我尝试使用printf函数调用它。然后我运行代码我没有输出,当我用gdb
调试它时,我得到一条消息说:
__printf (format=0x601040 "Result: %d") at printf.c:28
28 printf.c: No such file or directory.
我用以下代码编译它:
gcc -g -c print.s -o file.o
然后将其与:
联系起来gcc file.o -o file
当我搜索这个问题时,我发现我应该用
进行测试gcc file.o -o file -lc /lib64/ld-linux-x86-64.so.2
但结果是一样的。
我的代码
.data
OUT: .asciz "Result: %d" #The output string
.text
.global main
main:
jmp print
print:
mov $OUT, %rdi # Our preperation string
mov $5, %rsi # Value to be printed
xor %rax, %rax # zero out
call printf # call the function
#TODO: Jump back
exit:
mov $60, %rax # Call the exit syscall
mov $0, %rdi # error code 0
syscall # Interupt kernel and make the syscall