汇编文件可以直接调用C函数。
定义print.c文件如下:
#include <stdio.h>
extern int print();
int print() {
printf("Hello World\n");
return 0;
}
然后定义汇编文件
Nasm语法
global _start
extern print
section .text
_start:
call print
mov rax, 60
mov rdi, 0
syscall
gcc -c print.c -o c.o
nasm -f elf64 print.asm -o print.o
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -lc print.o c.o -o print
Gas语法
.global _start
.extern print
.section .text
_start:
call print
movq $60,%rax
movq $0,%rdi
syscall
gcc -c print.c -o c.o
as -o print.o print.s
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -lc print.o c.o -o print