在阅读有关汇编程序的文章时,我经常遇到人们在写文件时他们推送处理器的某个寄存器并稍后再次弹出它以恢复它之前的状态。

怎么能推一个寄存器? 它在哪里推? 为什么需要这个?

这可归结为单处理器指令还是更复杂?

警告:所有当前答案都以Intels汇编语法给出; 例如,AT&T语法中的push-pop使用像b,w,l或q这样的后置修复来表示被操作的内存的大小。 例如:pushl %eax和popl %eax

@hawken在大多数能够吞下AT&T语法(特别是气体)的汇编程序中,如果可以从操作数大小推导出操作数大小,则可以省略后缀大小。 这是您给出的示例的情况,因为%eax总是32位大小。

推送值(不一定存储在寄存器中)意味着将其写入堆栈。

弹出意味着将堆栈顶部的任何内容恢复到寄存器中。这些是基本的指示:

push 0xdeadbeef      ; push a value to the stack

pop eax              ; eax is now 0xdeadbeef

; swap contents of registers

push eax

mov eax, ebx

pop ebx

push和pop的显式操作数是rm,而不仅仅是register,因此你可以push dword [esi]。甚至pop dword [esp]加载然后将相同的值存储回同一地址。 (github.com/HJLebbink/asm-dude/wiki/POP)。我只提到这个因为你说"不一定是寄存器"。

您还可以pop进入内存区域:pop [0xdeadbeef]

linux汇编push,在x86汇编中寄存器上使用的push / pop指令的功能是什么?相关推荐

  1. linux内核nasm,在x86汇编代码,NASM,Linux中操作字符串

    我一直在试图操纵我的.s文件中的一个字符串 我希望将包含"/ bin / bash"的变量"pa"转换为"/ bin / sh",然后我想调 ...

  2. X86汇编---寄存器+指令

    文章目录 X86汇编常见的寄存器 x86汇编指令集大全 X86汇编常见的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP ...

  3. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  4. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  5. 寄存器理解 及 X86汇编入门

    本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc ...

  6. X86汇编常见的寄存器

    X86汇编常见的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) ...

  7. linux c语言编程内嵌汇编,gcc编译c语言中内嵌汇编

    gcc编译c语言中内嵌汇编 --AT&T and Intel 汇编语法对照 寄存器命名: AT&T:  %eax Intel: eax AT&T 语法源地址在左侧,目的地址在右 ...

  8. 在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或?

    在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或? 以下所有说明都做同样的事情:设置%eax为零.哪种方式最佳(需要最少的机器周期)? xorl %eax, %eax mov $0, ...

  9. 【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )

    文章目录 一.x86 汇编参考文档 1.Intel 官方的文档 2.常用 x86 汇编文档 3.x86 汇编指令查询器 总结 一.x86 汇编参考文档 下面的所有资料 , 都可以在博客资源 https ...

最新文章

  1. jQuery学习笔记(四)——表单选择
  2. C++打印STAIRS 图案算法(附完整源码)
  3. % mysql 代表_MySQL中的星号(*)和百分号(%)代表表示什么,MySQL的库名、表名、字段名、字段值是否区分大...
  4. oracle什么是swap分区,linux 安装oracle时swap空间不足
  5. 操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)
  6. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED驱动框架--面向对象、分层设计思想
  7. php表格合并_如何在php生成的表中合并单元格?
  8. VS2005 中网站转为Web应用程序的方法
  9. 基于pyqt5的Demo软件开发
  10. 电商后台之【商品管理系统】
  11. C语言编写游戏的程序教程,用C语言写贪吃蛇游戏图文教程
  12. js_ctype linux,linux – 解释export LANG,LC_CTYPE,LC_ALL的效果
  13. SharePoint 2013 SqlException (0x80131904):找不到Windows NT 用户或组xxxx\administrator
  14. linux中mysql启动时遇到MySql server PID file cound not be found
  15. 关于SQL Server 无法连接到服务器,远程过程调用失败,网络配置无项目
  16. unity 文字滚动显示_Unity ScrollRect 实现垂直滚动文字
  17. perp系列之二:perp源码README
  18. Python 值班表设计
  19. Markdown出题模板(YZOJ-)
  20. JDK SE下载共享账号分享

热门文章

  1. 2020 年 “联想杯”全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛 部分题解
  2. Systemverilog 压缩数组 packed
  3. 小白量化《穿云箭集群量化》(4)指标公式写策略
  4. 【智能金融】BCG报告:智慧运营,银行业竞争的下一个决胜之地
  5. mysql是单独使用的_MYSQL简单使用
  6. 三相智能电表行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. vue使用高德地图画电子围栏_地理围栏-辅助功能-开发指南-iOS 定位SDK | 高德地图API...
  8. 计算机网络技术有色盲限制吗,北京邮电大学:色盲考生不能报考数字媒体技术...
  9. PartTwo——MySQL基础
  10. C++使用Caesar Cipher将加密的文本解密恢复为纯文本的算法(附完整源码)