Я не уверен, что это за диапазон для немедленного действия в инструкции lui
.
Когда собираю:
lui $t0,32768
Успешно прошло без ошибок.
Тем не мение,
lui $t0,-32768
уведомил, что -32768 вне допустимого диапазона.
В MIPS непосредственные инструкции I-типа всегда имеют длину 16 бит. Это означает, что диапазон будет [0, 65535], если ассемблер рассматривает его как беззнаковый, и [-32768, 32767] для подписанного случая.
Однако то, что вы можете использовать в сборке, зависит от сборщика.
Например, некоторые ассемблеры, такие как снаряд и WeMips, принимают константы в [-32768, 65535], которые представляют собой смесь 16-битных знаковых и беззнаковых значений, Конвертер MIPS принимает только шестнадцатеричные значения, но WebMIPSASM принимает даже огромные значения, такие как 9223372036854775807, и усекает результат до 16 бит.