Простой вопрос MIPS, про загрузочный байт - PullRequest
1 голос
/ 31 октября 2010

У меня есть следующий вопрос здесь

.data
a: .asciiz "2021"
x: .byte 7,2,12
.text
main: addi $t2, $0, 1
lb $t3, a($t2)

Может кто-нибудь объяснить мне, КАК значение $ t3 равно 48?

, спасибо. ИЗМЕНИТЬи сбивает с толку.

.data
a: .word 12,-5,4,0
x: .byte 5
.text
main: addi $t1, $0, 8
lw $t2, a($0)
lw $t3, a($t1)

Как вы будете загружать слово из индекса 8, когда «а» имеет длину 4?

Ответы [ 2 ]

1 голос
/ 31 октября 2010

Да, когда вы добавляете $0 и 1, вы получаете 1, которое помещается в $t2.

Затем, когда вы оцениваете a($t2), это второй байт (смещение 1, поскольку он основан на смещении 0), равный a, то есть "0", код ASCII 0x30 или 48.


Из различной информации:

ADDI -- Add immediate (with overflow)
Description:
    Adds a register and a sign-extended immediate value
    and stores the result in a register
Operation:
    $t = $s + imm; advance_pc (4);
Syntax:
    addi $t, $s, imm

LB -- Load byte
Description:
    A byte is loaded into a register from the specified address.
Operation:
    $t = MEM[$s + offset]; advance_pc (4);
Syntax:
    lb $t, offset($s)

Регистр $0 всегда содержит аппаратное значение 0. MIPS установил ряд соглашений относительно того, как должны использоваться регистры. Эти предложения являются рекомендациями, которые не применяются аппаратным обеспечением. Однако программа, которая их нарушает, не будет работать должным образом с другим программным обеспечением.

Надеюсь, этих маленьких отрывков хватит, чтобы объяснить, что они делают.


И, что касается вашего редактирования, вы неправильно думаете, что .word 12,-5,4,0 имеет длину 4 байта. На самом деле он имеет длину 16 байтов, поскольку слова в MIPS имеют ширину 32 бита (четыре байта).

Таким образом, когда вы загружаете из байт смещение 8, вы получите слово 4.

0 голосов
/ 01 ноября 2010

К вашему сведению, таблица ASCII есть на странице 11 раздаточного материала 4;) Но я не понимаю этого: «когда, когда вы оцениваете ($ t2), это второй байт (смещение 1, поскольку он основан на смещении 0), который равен« 0 » Я считаю, что двоичное представление «2021»: 00110010001100000011001000110001 Итак, когда вы говорите «что такое« 0 »», вы имеете в виду 2-й бит справа? Это тот 0, о котором ты говоришь? Я не понимаю, откуда взялся ноль.

...