GNU Gas装配体中的等号赋值“x = 1”和“.equ x,1”或“.set x,1”是否有区别?
问题描述:
例如:GNU Gas装配体中的等号赋值“x = 1”和“.equ x,1”或“.set x,1”是否有区别?
a = 1
和:
.equ a, 1
和:根据
as --32 main.S
:
.set a, 1
都产生于输出逐字节相同cmp
。
我知道.equ
和.set
根据.equ
文件做同样的事情:https://sourceware.org/binutils/docs-2.25/as/Equ.html:
它与`.SET”的代名词。
,我知道.equ
从Difference between .equ and .word in ARM Assembly?
那么,关于=
呢?它和其他两个一样吗?
答
这是一样的。
grepping文档源之后,我发现,证实了这一点https://sourceware.org/binutils/docs-2.25/as/Setting-Symbols.html
符号可以通过编写一个符号被赋予的任意值,后跟一个等号'=”的部分,然后一个表达式(见表达式)。这相当于使用.set指令。