调用惯例

X86_64平台下32位汇编语言调用C库函数程序的汇编与链接

百般思念 提交于 2020-02-28 23:42:27
声明:转载请注明原链接 http://my.oschina.net/u/1167407/blog/484426 ‍‍‍今天在看《Professional Assembly Language》一书的第四章的Using C Library Functions in Assembly一节时,由于我使用的是64位的Linux系统,所以遇到了一些问题,其中有些挺有用的信息。所以,记录下来以免遗忘。‍ Using C Library Functions in Assembly这一小节介绍了如何在汇编程序中调用C的库函数。书中给出的示例代码如下:‍‍ .section .data output: .asciz “The processor Vendor ID is ‘%s’\n” .section .bss .lcomm buffer, 12 .section .text .globl _start _start: movl $0, %eax cpuid movl $buffer, %edi movl %ebx, (%edi) movl %edx, 4(%edi) movl %ecx, 8(%edi) pushl $buffer pushl $output call printf addl $8, %esp pushl $0 call exit 接下来使用gnu as汇编这段程序