Go 汇编器命名常量

问题描述 投票:0回答:1

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 assembly
1个回答
0
投票

Go 汇编器在您的代码上运行 C 预处理器的变体。 IE。您使用

#define
定义的内容实际上将在您的代码中被搜索和替换。所以如果你写

#define myConstant        WORD $2024

...

MOVL myConstant, EAX

结果会是这样的

MOVL WORD $2024, EAX

这显然是荒谬的。

要解决此问题,请将宏更改为只读

#define myConstant 2024

并像使用符号一样使用它

MOVL $myConstant, EAX
© www.soinside.com 2019 - 2024. All rights reserved.