学习操作系统:汇编与C语言,以及汇编指令的调试

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值