鱼C论坛

 找回密码
 立即注册
查看: 2621|回复: 11

请问这短代码实现的功能

[复制链接]
发表于 2016-10-16 01:46:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ截图20161015223222.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-10-16 01:57:56 | 显示全部楼层
好像是子程序调用。不知道这命令有没有bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-16 06:16:04 From FishC Mobile | 显示全部楼层
通常,高级语言的函数编译后的代码中,寄存器EBP是用来访问栈的。PUSH   EBP        MOV  EBP,ESP   [EBP+xxx]访问的是参数,[EBP-xxx]访问的是临时变量。这段代码应该是调用一个函数,该函数的参数在EBP+12,EBP+16里,EBP+8是函数的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-16 06:18:48 From FishC Mobile | 显示全部楼层
[EBP+4]保存了返回地址,[EBP]保存了原EBP
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-16 06:20:30 From FishC Mobile | 显示全部楼层
Ret12是调整堆栈返回,说明该函数有3个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-16 14:38:22 | 显示全部楼层
xieglt 发表于 2016-10-16 06:16
通常,高级语言的函数编译后的代码中,寄存器EBP是用来访问栈的。PUSH   EBP        MOV  EBP,ESP   [EBP+x ...

恩,分析的很棒,但是程序一开始没有保存寄存器的值,这样调用后会不会出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-16 18:18:51 | 显示全部楼层
恩,应该是会出错的
完整的写法:

PUSH  EBP
MOV   ESP,ESP
SUB    ESP,XXXX


ADD   ESP,XXXX ;这一句其实可以不要,不过高级语言编译后的函数通常都有这一句。
MOV  ESP,EBP
POP   EBP
RET   12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-16 18:22:28 | 显示全部楼层
LEAVE 指令 即相当于

MOV   ESP,EBP
POP    ESP
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-16 21:22:29 | 显示全部楼层
xieglt 发表于 2016-10-16 18:18
恩,应该是会出错的
完整的写法:

如果这些寄存器不小心改错了电脑会坏掉吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-17 08:19:40 From FishC Mobile | 显示全部楼层
电脑不会坏掉,系统不会崩溃,但是你的程序会死掉。Windows是在保护模式下运行。系统在ring0下运行。你的程序在ring3下运行,破坏不了系统。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-19 14:25:29 | 显示全部楼层
xieglt 发表于 2016-10-17 08:19
电脑不会坏掉,系统不会崩溃,但是你的程序会死掉。Windows是在保护模式下运行。系统在ring0下运行。你的程 ...

只要电脑不会坏掉就好,程序死了可以复活
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 22:40:01 | 显示全部楼层
xieglt 发表于 2016-10-16 18:18
恩,应该是会出错的
完整的写法:

学习了,谢谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表