Почему мой кросс-компилятор MIPS работает так, чтобы НЕ работать? - PullRequest
1 голос
/ 30 марта 2010

Я настроил свой кросс-компилятор для создания инструкций MIPS.

И он хорошо компилирует код С.

но я нашел странную вещь для НЕ операций.

если я сделаю код вроде

   int a;
   func(!a);

и я изучил инструкции MIPS с учебником, в котором написано «MIPS преобразует операцию НЕ в« ни с нуля »»

Так что я думал, что это будет преобразовано как

 nor a a $zero

но мой компилятор конвертирует

xori a a 0x0
sltu a 1

/////////////////////////////////////// я скомпилировал код с помощью «myaccount >> mipsel-unknown-linux-gnu-gcc -S myfilename.c» и это делает файл myfilename.s ..

что мне не хватает ??

1 Ответ

1 голос
/ 30 марта 2010

Вы путаете операции "не". Операция «ни с 0» равна ~a (дополнение 1), а вы написали !a (который возвращает 1, если операнд равен 0 или 0 в противном случае).

...