push和pushl的区别
来源:互联网 发布:论文引用格式网络文章 编辑:程序博客网 时间:2024/06/05 09:56
AT&T汇编中,命令中可以指定操作范围,如pushb是将一个byte压栈,而pushw就是将一个word压栈,同样pushl就是压栈long(也就是双字)。
%esp指的是esp寄存器,已知是双字;而0xfffffff8(�p)指的是一个内存空间,所以要用pushl来指明那里存放的是一个双字。
%esp指的是esp寄存器,已知是双字;而0xfffffff8(�p)指的是一个内存空间,所以要用pushl来指明那里存放的是一个双字。
当要压栈的对象已经确定(也就是说已经知道是字节、字或者双字),那么使用push就不会产生歧义,也就是说汇编器可以自己判断自己要操作的是什么长度的操作对象;但是当汇编器不能自己判断操作对象长度时,就需要使用pushl之类的指令来指明操作对象长度;
%ebp指的是esp寄存器,这是一个32位的寄存器,汇编器是知道这个寄存器存放的是dword,不需要显式的指明也没有歧义;而0xfffffff8(�p)是使用基址寻址方式指向的一个内存空间,内存是连续的,汇编器不能仅仅根据一个内存地址就判断出那里存放的数据的长度,所以直接这样写就会产生歧义,所以要使用pushl之类的指令来指明要操作的数据的长度;
其实说白了:pushl就相当于intel汇编中的pushdword;
错误例子:"push 01h ";nasm汇编器会提示一个警告。
正确例子:Intel格式的"pushdword 01h"或者AT&T格式的"pushl 01h";
%ebp指的是esp寄存器,这是一个32位的寄存器,汇编器是知道这个寄存器存放的是dword,不需要显式的指明也没有歧义;而
其实说白了:pushl就相当于intel汇编中的push
错误例子:"
正确例子:Intel格式的"push
http://blog.sina.com.cn/s/blog_6345fbdd0101gl87.html
0 0
- push和pushl的区别
- Push和Modal的区别
- present和push的区别
- adb push和adb install的区别
- adb push 和 adb install 的区别
- javascript 中 push和concat的区别
- Git------Commit和Push的区别
- git下commit和push的区别
- stack中add()和push()的区别。
- Git------Commit和Push的区别
- git pull和git push的区别
- MVC 的 Pull 和 Push 类型的区别
- js里面的push和concat的区别
- android adb push 和 adb install的区别
- 总结MVC中push和pull的区别
- Android中adb push和adb install的使用区别
- push view controller 和 present view controller的区别
- Android adb push安装和直接安装软件的区别
- leetcode: Minimum Depth of Binary Tree
- Hibernate知识点
- UIButton设置圆角
- 解决 win32控制台程序一闪而过
- Swift学习笔记(十七)协议
- push和pushl的区别
- ios线程-GCD
- Nginx Proxy cache + Perl + ImageMagick 做Wap站图片适配 实时压缩
- antlib.xml could not create task or type of type componentdef
- .NET开发不能不知道的CMD命令
- 删除某个目录及目录下的所有子目录和文件
- linux c++下gb18030、utf8之间的转换
- poj 3259 Wormholes 【SPFA&&判断负环】
- 【leetcode】Longest Substring Without Repeating Characters