我设置了我的交叉编译器来制作MIPS指令。
它很好地编译了C代码。
但我发现NOT操作很奇怪。
如果我制作像
这样的代码 int a;
func(!a);
我研究了MIPS指令和教科书 “MIPS将NOT操作转换为'也不归零'”
所以我认为它会转换为
nor a a $zero
但我的编译器会转换
xori a a 0x0
sltu a 1
/////////////////////////////////////// 我使用'myaccount>>编译代码mipsel-unknown-linux-gnu-gcc -S myfilename.c' 它使myfilename.s文件..
我错过了什么?
答案 0 :(得分:1)
你在混淆“不”操作。 “not with 0”操作是~a
(1的补码),而你写!a
(如果操作数为0则返回1,否则返回0)。