首页
社区
课程
招聘
未解决 大佬们请问一下,如果在c++中使用内联汇编,在__asm的开始的时候,需要将哪些寄存器的数值入栈呢?最后结束的时候需要在还原寄存器的状态吗?
发表于: 2020-9-30 17:44 2149

未解决 大佬们请问一下,如果在c++中使用内联汇编,在__asm的开始的时候,需要将哪些寄存器的数值入栈呢?最后结束的时候需要在还原寄存器的状态吗?

2020-9-30 17:44
2149
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 216
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
了解的大佬回答下啊,本人刚入门不久,对于有些地方不是很了解。比如,如果此时寄存器的值,不保存或者不还原的话,不会影响到程序的其他地方吗?
2020-9-30 18:26
0
雪    币: 3870
活跃值: (6041)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
会影响的 一般为了简便 在x86下可以使用pushad  来保存八个寄存器 退出之前用popad来恢复寄存器
2020-9-30 19:38
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不是naked,编译器会帮你搞
2020-9-30 22:20
0
雪    币: 4157
活跃值: (1540)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
要修改哪个寄存器就保存一下
2020-10-1 18:12
0
雪    币: 6
活跃值: (561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你汇编内用到哪个保存哪个呗,esp和ebp是必须要保存,实在不知道就pushad、pushfd
2020-10-31 15:16
0
游客
登录 | 注册 方可回帖
返回
//