1. 练习环境
操作系统:Windows
GCC:mingw64
汇编:NASM
2. C语言获取汇编方法的返回值
汇编中把值放在AX寄存器中,GCC读取AX的内容
Text.asm
message: dd 'Hello'
messageLen equ $ - message
section .text
;导出函数
global getMessage
;函数定义--getMessage
getMessage:
push rbp
mov rbp, rsp
mov rax, message
leave
ret
TextMain.c
#include <stdio.h>
#include <stdlib.h>
extern char* getMessage();
int main(int argc, char* argv[])
{
char *str1_Msg3 = getMessage();
printf("str1_Msg3=%s\n", str1_Msg3);
return 0;
}
makefile
说明:elf64是因为我下载的mingw64,不支持32位的。
Text : TextMain.o Text.o
gcc -o Text add.o test.o
add.o:
nasm -f elf64 Text.asm
test.o:
gcc -c TextMain.c
clean:
rm Text Text.o TextMain.o
3. C语言给汇编的方法传参
4. ld链接时的Ttext
https://blog.csdn.net/mirage1993/article/details/40661273
https://blog.csdn.net/chuanzhilong/article/details/53020351