Почему мой кросс-компилятор 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 в противном случае).