Упомянутая здесь инструкция: lb
, которая загружает один байт в регистр путем расширения знака до размера слова.Это означает, что если старший значащий бит установлен в 1, он также заполнит оставшиеся 24 бита 1.Это сделано для того, чтобы сохранить значение дополнения до двух в байте в 32-битном представлении.
Если ваш байт будет 0100 1010
, расширение знака заполнит его 0
как 0000 000... 0100 1010
.
Если ваш байт будет 1011 0101
, расширение знака заполнит его 1
как 1111 111... 1011 0101
.
Чтобы избежать этого и всегда дополнять байт 0
, вы можете использоватьальтернативная инструкция lbu
, которая не выполняет расширение знака, но вместо этого дополняет байт 0
.Это сохраняет беззнаковое значение байта, так как для них не используется комплемент twos.