电脑是64位的,汇编语言是AT&T风格。风格不同的汇编语言,汇编时的指令是不同的。在我学习过程中带来了挺多麻烦。
C语言内容。hello.c
#include <stdio.h>
//声明汇编编写的函数
extern void print_hello();
int main() {
// 调用汇编函数
print_hello();
return 0;
}
汇编代码内容。print_hello.s
.global print_hello
.section .data
hello:
.string "Hello, World!\n"
.section .text
print_hello:
movq $hello, %rdi
movq $0, %rax
call printf
ret
.section .note.GNU-stack,"",@progbits
各自编译汇编
as print_hello.s -o print_hello.o
gcc -c hello.c -o hello.o
gcc hello.o print_hello.o -o output_executable -no-pie
结果展示