variables - 引用变量的三种方式之间的区别
问题描述
我注意到以下所有三种方式都可以“工作”访问 asm 中的变量:
从字面上命名它:
.globl main number1: .byte 7 number2: .byte 14 main: mov number1, %ebx mov number2, %ecx mov $0, %eax multiply_step: add %ebx, %eax dec %ecx jnz multiply_step ret
用
$
前缀命名它:number1: .byte 7 # use number1 = 7 or .equ to make this block work number2: .byte 14 main: mov $number1, %ebx # editor's note: this gets the address mov $number2, %ecx # not the value.
将其命名为
rip
:number1: .byte 7 number2: .byte 14 main: mov number1(%rip), %ebx mov number2(%rip), %ecx
当您像在这个问题98
中那样将它们相乘时,这三个都给了我相同的乘积。
这三种引用变量的方法之间有什么区别,并且其中一种方法比其他方法更受欢迎?
解决方案
推荐阅读
- docker - 在 swarm 模式下运行应用程序时应该在哪里定义 ENV 变量?
- java - 使用 GraphQL Java 工具时 Spring Boot 应用程序无法启动
- jsonschema - json schmea - 当可能存在其他值时如何验证字符串数组中的特定值
- javascript - 前端处理:使用 Rails API 的 FILES/CSV
- process - Gunicorn:检查正在运行的进程的命令行参数。(高山 Linux)
- javascript - Vuex4 - 无法读取未定义的属性(读取“状态”)
- sql - 的概念
输入SQL? - amazon-web-services - 为什么我无法在 AWS Cognito 控制台中选中复选框?
- swift - 当用户在我的应用程序后台时,当计时器达到 0 时,我将如何显示通知?
- reactjs - 在单元格中换行