社区
汇编语言
帖子详情
反汇编中的 “lea eax,dword ptr ss:[esp-8]” 什么意思
litorat
2008-06-08 05:47:04
lea eax,dword ptr ss:[esp-8]
这个什么意思??
...全文
5531
17
打赏
收藏
反汇编中的 “lea eax,dword ptr ss:[esp-8]” 什么意思
lea eax,dword ptr ss:[esp-8] 这个什么意思??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xyblack
2008-10-04
打赏
举报
回复
lea 指令是用来获得内存单元的偏移地址。
例如lea eax, dword [esp - 8]
;因为[esp - 8] 内存单元你无法确定其内存偏移,所以必须通过lea指令来获取其内存单元的偏移。。
水墨风光
2008-10-02
打赏
举报
回复
eax = esp -8
rageliu
2008-07-03
打赏
举报
回复
取栈上的地址,也就是局部变量的指针
yc_8301
2008-07-03
打赏
举报
回复
[Quote=引用 11 楼 jennyvenus 的回复:]
引用 10 楼 Albert_1030 的回复:
引用 4 楼 cnzdgs 的回复:
lea eax,dword ptr ss:[esp-8]
这是取一个动态变量的指针。
真不厚道
很正确吧,从物理上看是将esp-8的值送给eax,从逻辑上看就是取变量的地址。
[/Quote]
我是一个初学者,,还没有入门,但是觉得这句很经典。。。
从物理上看是将esp-8的值送给eax,从逻辑上看就是取变量的地址。
GeomaticMm
2008-07-02
打赏
举报
回复
[Quote=引用 14 楼 jennyvenus 的回复:]
是的,在高级语言用编译程序生成的二进制代码中,这是很常见的指令,
因为mov 指令不支持减法操作(是不支持吧,我是否记错了),比如mov eax, esp - 8,是不正确的…
[/Quote]
mov指令只是简单的数据传送指令啊
mov eax,esp - 8肯定不对了
mov eax,[esp - 8]还行
然后楼上的lea指令,改写成mov eax,offset ss:[esp - 8]从语法上讲也是可行的
不过lea指令和offset用法上有不同
offset指令是在编译的时候就把offset ss:[esp - 8]换成esp-8这个内存单元相对于ss段的偏移了
适用于可以在编译时确定的内容
所以全局的内容都可以使用offset来求偏移
lea指令是在程序执行阶段实时计算偏移,用于无法在编译时就确定的内容
比如局部变量之类的
我刚才所说的只是讨论语法 没有关注lea eax,ss:[esp - 8]指令的实际情况
然后说的不太清楚 因为自己理解的也不深 大家包涵
ebp用于在子函数中引用函数的参数以及局部变量
一般情况下,ebp+x引用函数的参数,ebp-x引用局部变量
用户 昵称
2008-07-01
打赏
举报
回复
[Quote=引用 13 楼 Geomatic 的回复:]
刚才看了楼上的解释
有点迷惑了
查书验证了下
LEA是取有效地址指令
LEA EAX,DWORD PTR SS:[ESP-8]是把SS:[ESP-8]这个内存单元相对于SS段的偏移地址送入EAX寄存器吧
也就是把ESP-8这个值
如果有不对的地方 请高手指教
[/Quote]
是的,在高级语言用编译程序生成的二进制代码中,这是很常见的指令,
因为mov 指令不支持减法操作(是不支持吧,我是否记错了),比如mov eax, esp - 8,是不正确的,所以大多数自动生成的指令都是用lea eax,[esp-8]这种方法。
不过按俺的理解,用ebp的似乎更多。
GeomaticMm
2008-07-01
打赏
举报
回复
刚才看了楼上的解释
有点迷惑了
查书验证了下
LEA是取有效地址指令
LEA EAX,DWORD PTR SS:[ESP-8]是把SS:[ESP-8]这个内存单元相对于SS段的偏移地址送入EAX寄存器吧
也就是把ESP-8这个值
如果有不对的地方 请高手指教
用户 昵称
2008-06-30
打赏
举报
回复
[Quote=引用 10 楼 Albert_1030 的回复:]
引用 4 楼 cnzdgs 的回复:
lea eax,dword ptr ss:[esp-8]
这是取一个动态变量的指针。
真不厚道
[/Quote]
很正确吧,从物理上看是将esp-8的值送给eax,从逻辑上看就是取变量的地址。
huxiaolai
2008-06-30
打赏
举报
回复
[Quote=引用 5 楼 jxc25 的回复:]
你给分就给你讲.
[/Quote]
^_^,高手
Albert_1030
2008-06-29
打赏
举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
lea eax,dword ptr ss:[esp-8]
这是取一个动态变量的指针。
[/Quote]
真不厚道
tangyingzhao
2008-06-09
打赏
举报
回复
lea eax,dword ptr ss:[esp-8]
从esp-8 指想的内存处获取dword类型的值写入EAX
BAYNPU
2008-06-09
打赏
举报
回复
Syser Debugger软件
下载网址:http://www.onlinedown.net/soft/41141.htm
litorat
2008-06-08
打赏
举报
回复
说个名字出来撒,再开贴给你分
jxc25
2008-06-08
打赏
举报
回复
你给分就给你讲.
cnzdgs
2008-06-08
打赏
举报
回复
lea eax,dword ptr ss:[esp-8]
这是取一个动态变量的指针。
litorat
2008-06-08
打赏
举报
回复
esp 减少么??
1楼的用的什么调试器呢??
大熊猫侯佩
2008-06-08
打赏
举报
回复
将 esp - 8 的值放入 eax ,即取 ss:[esp-8] 的偏移地址
辅助汇编学习记录(一)之美
1.OD
中
ctrl+f9:运行到返回,就是运行到当前断点所在的函数末尾"retn xxx"处,若xxx=10,那么 10等于10进制的16,就是说这个函数有4个参数,一个参数默认是占4字节,所以就是retn 10。 2.调试程序时,在OD内部小窗口左上角会显示当前断点所在的函数层,是在系统领空还是某个应用程序领空。 3.call前出现
lea
edx,d
word
ptr
ss
:[e...
C++
反汇编
:多维数组与指针
反汇编
(Disa
ss
embly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解
反汇编
对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在
反汇编
代码里面。
C++
反汇编
:数据类型与常量
反汇编
(Disa
ss
embly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于逆向工程、软件汉化等领域,学习和理解
反汇编
对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在
反汇编
代码里面。
C++
反汇编
:流程控制与循环结构
反汇编
(Disa
ss
embly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于逆向工程、软件汉化等领域,学习和理解
反汇编
对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在
反汇编
代码里面。
反汇编
笔记
1.OD
中
ctrl+f9:运行到返回,就是运行到当前断点所在的函数末尾"retn xxx"处,若xxx=10,那么 10等于10进制的16,就是说这个函数有4个参数,一个参数默认是占4字节,所以就是retn 10。 2.调试程序时,在OD内部小窗口左上角会显示当前断点所在的函数层,是在系统领空还是某个应用程序领空。 3.call前出现
lea
edx,d
word
ptr
ss
:[ebp
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章