2016-06-22 16 views
2

Мой вопрос: Каков размер целочисленных констант в MIPS?MIPS: Каков размер целочисленных констант в MIPS?

Here Я нашел, как они используются.

Если у меня есть такая константа, определенная в моем сегменте данных, и я хочу рассчитать размер сегмента данных, какой размера я беру для этого константы: размер слова, байты, половины, .. ?

Вот пример сегмента данных:

.data 
array: .word 1, 2, 3 
LEN = 2    ; Here's the constant 

Размер сегмента данных составляет: 3 * 32 (бит) + (бит)

Спасибо заранее?!

ответ

1

Предполагаете, что вы звоните константы в "equates".

Константы не занимают места в сегменте данных, всякий раз, когда они используются в качестве операнда, они заменяются их выражением, а размер должен соответствовать размеру операнда, поэтому в вашем примере сегмент данных будет использовать 4 * 3 байта = 12 байтов (96 бит).

Например, если вы пишете в MARS тренажере

.data 
array: .word 1,2,3 
.eqv LEN 2 
.eqv LARGE_VALUE 20000 
buffer: .space LARGE_VALUE 

, то вы можете использовать идентификатор LEN в качестве замены для 2, например,

li $a1, LEN 
li $a2, LARGE_VALUE 

В этом случае LEN будет 16 бит немедленным при сборке первой команды, и ассемблер будет излучать код, чтобы сделать 32-битные нагрузки для второй инструкции псевды. Буфер, определенный в сегменте данных, будет 20000 байтов (как определено eqv LARGE_VALUE)

+0

Благодарим вас за четкое объяснение. –