Assembly 可以在GAS(GNU汇编程序)中使用MIPS寄存器名吗?
如果我使用注册表名,我会得到:Assembly 可以在GAS(GNU汇编程序)中使用MIPS寄存器名吗?,assembly,gnu,mips,binutils,Assembly,Gnu,Mips,Binutils,如果我使用注册表名,我会得到: Error: illegal operands `add $t0,$zero,$zero' 如果我使用寄存器编号($8而不是$t0和$0而不是$0),它会工作。 (我使用的是binutils 2.17)。GNU汇编程序不直接支持符号寄存器名。如果使用gcc驱动汇编程序,一种常见的方法是对汇编程序源文件使用“.S”扩展名(它告诉gcc在汇编程序之前将源文件通过C预处理器),并#包括一个包含如下定义的头文件: #define zero $0 #define v0
Error: illegal operands `add $t0,$zero,$zero'
如果我使用寄存器编号($8
而不是$t0
和$0
而不是$0
),它会工作。
(我使用的是binutils 2.17)。GNU汇编程序不直接支持符号寄存器名。如果使用gcc驱动汇编程序,一种常见的方法是对汇编程序源文件使用“.S”扩展名(它告诉gcc在汇编程序之前将源文件通过C预处理器),并#包括一个包含如下定义的头文件:
#define zero $0
#define v0 $2
#define v1 $3
然后汇编器源可以有如下语句
add v0, zero, zero
小诡辩:
v0
和v1
是$2
和$3
($1
是在
)!你说得对-这就是我信任我的内存的原因,威尔是正确的。请注意,标题可能已经是你系统的一部分了。查找文件,如/usr/include/sys/reg.h
或/usr/include/mips-linux-gnu/sys/regdef.h
。Binutils 2.18及更高版本确实支持符号寄存器名。