堆栈相关指令练习

  • 使用3种方式实现push ecx

1.
MOV DOWRD PTR SS:[ESP-4], ECX
SUB ESP, 4
2.
LEA EAX, DWORD PTR SS:[ESP-4]
MOV DWORD PTR DS:[EAX], ECX
MOV ESP, EAX
3.
MOV DWORD PTR SS:[ESP-4], ECX
MOV ESP, DWORD PTR SS:[ESP-4] 
  • 使用3种方式实现pop ecx

1.
MOV ECX, DWORD PTR SS:[ESP]
ADD ESP, 4
2.
LEA EAX, DWORD OTR SS:[ESP]
ADD ESP, 4
MOV ECX, DWORD PTR DS:[EAX]
3.
MOV ECX, DWORD PTR SS:[ESP]
MOV ESP, DWORD PTR SS:[ESP+4]
  • 使用3种方式实现push esp

1.
MOV DWORD PTR SS:[ESP-4], ESP
SUB ESP, 4
2.
LEA EAX, DWORD PTR SS:[ESP-4]
MOV DWORD PTR DS:[EAX], ESP
MOV ESP, EAX
3.
MOV EAX, ESP
SUB ESP, 4
MOV DWORD PTR DS:[ESP], EAX
  • 使用3种方式实现pop esp

1.
MOV ESP, DWORD PTR SS:[ESP]
2.
LEA EAX, DWORD PTR SS:[ESP]
MOV ESP, DWORD PTR DS:[EAX]
# 最后两种方式比较有趣
3.
MOV EAX, DWORD PTR SS:[ESP]
XOR EAX, DWORD PTR SS:[ESP]
XOR ESP, EAX
4.
MOV EAX, DWORD PTR SS:[ESP]
XOR EAX, DWORD PTR SS:[ESP]
XOR EAX, DWORD PTR SS:[ESP]
MOV ESP, DWORD PTR DS:[EAX] 

总结: 一条汇编指令可由其他指令组合实现,不局限于一种表现形式,编译器不同其生成的汇编代码也不尽相同。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 5.汇编-堆栈相关指令 什么是堆栈 程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要...
    Asura_Luo阅读 3,720评论 0 1
  • 前方高能预警,本文较长,涉及到的原理性东西较多,建议收藏方便后期查看。 我们常常说堆栈堆栈,但是堆和栈其实是完全不...
    幸运的芳1990阅读 23,162评论 4 43
  • 在开始函数调用约定之前我们需要先了解一下几个相关的指令 1.1 push pushq立即数# q/l是后缀,表示操...
    联旺阅读 4,589评论 0 0
  • 指令注释使用PUSH<1>向堆栈入压入数据<2>修改栈顶指针ESP寄存器的值PUSH r16/32PUSH m16...
    欧皇ff阅读 3,418评论 0 1
  • 转载,详见原文:https://blog.csdn.net/aemperor/article/details/47...
    andy_shx阅读 5,464评论 0 0

友情链接更多精彩内容