Go Assembly 中有没有办法命名常量值?我想命名一些常量以使我的代码更具可读性。
我正在寻找类似于 C 中的
#define
或 Arm64 汇编中的 .equ
的东西。这是我用这些语言所做的示例:
C
#define myConstant 2024
Arm64
.equ myConstant, 2024
我尝试在 Go Assembly 中使用
#define
,但我只能让它在整个指令下工作。这是一个例子。
#define MyInstruction MOVD R1, R2
#define OtherInstruction WORD $0xaabbccee
当我尝试仅使用
#define
并使用常量时,就会发生这种情况。
代码
#define myConstant WORD $2024
编译器错误
myFile:49: expected '(', found $
asm: assembly of myFile.s failed
预先感谢您的任何帮助或指导
Go 汇编器在您的代码上运行 C 预处理器的变体。 IE。您使用
#define
定义的内容实际上将在您的代码中被搜索和替换。所以如果你写
#define myConstant WORD $2024
...
MOVL myConstant, EAX
结果会是这样的
MOVL WORD $2024, EAX
这显然是荒谬的。
要解决此问题,请将宏更改为只读
#define myConstant 2024
并像使用符号一样使用它
MOVL $myConstant, EAX