首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >movl教学与leal教学的区别

movl教学与leal教学的区别
EN

Stack Overflow用户
提问于 2015-10-13 01:00:17
回答 1查看 897关注 0票数 0

假设堆栈如下,其中字符串/bin/sh的地址为0x11:

movl %esi, 0x8(%esi)之后,我认为从内存地址%esi加载的值将移动到0x8(%esi) (这就是movl的定义)。因此,字符串/bin/sh将放在地址0x8(%esi)处。但结果是11被放在这个地址上。在我看来,如果我们想把11放在那个地址上,我们应该使用leal指令,因为leal不会取消引用(只是一个地址而不是值)。

EN

回答 1

Stack Overflow用户

发布于 2015-10-13 01:06:02

movl %esi, 0x8(%esi)是寄存器到内存的移动。第一个操作数是一个寄存器,它不引用内存。

另一方面,leal %esi, 0x8(%esi)甚至不存在,因为您不能获取寄存器的地址,而且lea也不能写入内存。

如果你想复制内存,你通常需要通过一个寄存器,例如:

代码语言:javascript
运行
复制
movl (%esi), %eax
movl %eax, 0x8(%esi)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33086486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档