学汇编的时候可以拿IDA之类的反汇编工具辅助学习,再用gdb或者IDA动态调试,跟踪每条指令的 执行结果。都不难
2023-09-11 14:19:08 时间
作者:潘安仁
链接:https://www.zhihu.com/question/40720890/answer/87926792
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
lea eax,[eax+2*eax]
也就是eax*3的意思,lea指令是一个取地址指令,具体可以去查手册,简单来说就是把右操作数的"["和"]"之间的值放到左操作数里,这里就是把eax+2*eax放到eax里。
链接:https://www.zhihu.com/question/40720890/answer/87926792
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
建议先去了解GCC的内联汇编的格式,我之前也没接触过GCC的内联汇编,都是看intel的汇编。临时找了一篇文章GCC内联汇编基础-zhuhefang2006-ChinaUnix博客,学习了一下。
根据文章里的例子:
lea eax,[eax+2*eax]
也就是eax*3的意思,lea指令是一个取地址指令,具体可以去查手册,简单来说就是把右操作数的"["和"]"之间的值放到左操作数里,这里就是把eax+2*eax放到eax里。
而第六行汇编其实是取指针指向的值的意思,也就是intel汇编的:
mov eax,[edx+4*eax]
意思是取内存地址edx+4*eax里的值,放到eax里。至于这个值是什么,我们是不知道的,所以书里也只写了个M[……]。
如果把上条指令的mov变成lea:
lea eax,[edx+4*eax]
意思就是把edx+4*eax的值,放到eax里。
相关文章
- Xcode中的调试工具栏简介
- 使用PhoneGap命令行工具创建IOS PhoneGap项目及无证书真机调试
- GRPC调试工具
- 调试工具之GDB
- IDEA调试技巧之条件断点
- php分享三十二:php调试工具
- Shell - Shell脚本调试方法
- 【原创】Erlang 之 debugger 调试简介
- 如何调试oracle,sqlserver存储过程
- intellij idea 无法启动或调试 spring-boot
- HTTP调试 抓包 工具 Fiddle 简介 示例
- 断点 太多了 调试运行特别慢-把所有的历史断点都去掉就快了
- SAP Spartacus UI 服务器端渲染的调试启动方式 - debug 模式
- SAP Spartacus 服务器端渲染的单步调试
- 单步调试学习NgRx createSelector 工具函数的使用方式
- 如何使用Chrome开发者工具调试web socket应用
- 单步调试学习NgRx createSelector 工具函数的使用方式
- 浏览器调试工具的使用
- Python自带又好用的代码调试工具Pdb学习笔记
- Birdseye:一款极其强大的 Python 调试工具
- 记一次模型调试问题:使用TextLSTM/RNN学习不动,损失和acc均无变化
- 工欲善其事 之 Web 前端调试工具格式化混淆过的 JS 代码
- LabVIEW状态机迭代时间调试工具
- Phalcon 调试应用程序
- Python 调试工具PySnooper
- mac 蓝牙 串口调试 助手(工具)
- Android系统常用的调试工具
- 【VS调试教学】数据结构部分的学习建议:画图 + 写代码 + 调试