2015-09-13 7 views
0
li $t0 , 0xABCD9876 
sw $t0 , 100($0) 
lb $s5 , 101($0) 

Новое для MIPS; Таким образом, мое понимание,Как этот код MIPS проверяет подлинность?

li загружает значение 0xABCD9876 в регистр $t0

Это значение затем сохраняется в памяти по адресу ($0+100)

фунтов затем копирует байт по адресу ($0+101) в регистр $s5

Но в регистре ничего нет ($0+101) есть? 0xABCD9876 хранился в ($0+100), а не ($0+$101). Потеряно в этот момент.

ответ

1

Память байт-адрес. Следовательно, ($0+100) указывает на один байт. Когда он используется с sw или lw инструкции, вы на самом деле доступ не только ($0+100), но и ($0+101), ($0+102) и ($0+103) (другими словами, вы подключаетесь четыре байта (одно слово) начиная с, что решения). Сохраняя слово, а затем получая доступ к определенному его байту, вы можете определить, какой порядок байтов слова хранился в памяти, и, следовательно, определить конечность процессора.

+0

Когда я использую 'sw' или' lw', всегда ли я получаю четыре байта? – izelkay

+0

@izelkay: Да. Слово 32 бита, а байт - 8 бит, поэтому слово составляет 4 байта; каждый раз, когда вы храните или загружаете слово, вы будете хранить или загружать 4 байта. – icktoofay

+0

Хорошо, спасибо. – izelkay

Смежные вопросы