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

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

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

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

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

   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 ответ

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

Другие вопросы по тегам