assembly - src 或 destination 中两个值的汇编语言含义
问题描述
例如,两者之间有什么区别
cmpl $0x7, 0x8(%rsp)
和
cmpl $0x7, (%rsp)
cmp
还有和有什么区别cmpl
?
解决方案
AT&T 语法中 x86 上的内存操作数通常是“ offset ( base , index , scale )”,其中offset是(常量)偏移量,base是(基)寄存器,index是(索引)寄存器,scale是常量1、2、4 或 8。但是,可以省略这些字段中的大多数以获取默认值。无偏移量表示偏移量为 0。无基数表示无基址寄存器。没有索引和比例意味着没有索引寄存器。
在您的具体示例中,(%rsp)
表示%rsp
作为基址寄存器,没有偏移量和索引。 0x8(%rsp)
表示%rsp
作为基址寄存器和 0x8 (8) 作为偏移量。
推荐阅读
- python - 避免 webdriver 类的重复代码
- jmeter - 如何在 JMeter 中比较从 DB 到 JSON 变量的特定位置的值
- swift - 如何在swift中从下到上为特定标签设置动画
- java - Netbeans 中无法打开共享文件错误 JavaFx FXML 应用程序
- php - 比较 Carbon startOfDay() 和 now()->startOfDay() 不能正常工作
- scala - circe 自动将 json 解析为案例类,但缺少一些键值
- python - 如何解决子图中的线不可见
- reactjs - 使用 React 测试库和 Mock Service Worker 测试 React 模式的最佳实践?
- opencv - OpenCV 中是否有等效功能或 skimage.feature.peak_local_max 的实现?
- mysql - 无延迟的实时数据处理