#assembly #mips #directive #mars-simulator
#сборка #mips #директива #mars-симулятор
Вопрос:
Я пытаюсь выяснить, что делает эта программа, но у меня такое чувство, что MARS неправильно обрабатывает директиву .data.
Что хранится в сегменте данных, если инструкция по сборке дана в соответствии с директивой .data? Когда я запускаю это в MARS (MIPS assembler и runtime simulator), он просто сохраняет нулевое значение в 0x10010000 (где должны храниться статические данные). Я ожидал, что она сохранит машинный код для lui $r1, 0xFFC0
(т.е. 00111100000010011111111111000000).
.data
info: lui $r1, 0xFFC0
.text
.globl main
main:
la $s1, info
lw $a0, 0($s1)
jal process
sb $v0, 4($s1)
process:
lui $t1, 0xFFC0
and $v0, $a0, $t1
srl $v0,$v0,26
jr $ra
Спасибо!
Ответ №1:
$r1
недопустимое имя регистра в MIPS. Изменение инструкции на lui $1,0xffc0
или lui $t1,0xffc0
приводит к тому, что машинный код сохраняется в .data
разделе.