MIPS:MIPS 中整数常量的大小是多少?
MIPS: What's the size of integer constants in MIPS?
我的问题是:MIPS 中整数常量的大小是多少?
Here 我找到了它们的用法。
If I have such a constant defined in my data segment and I want to
calculate the size of the data segment, what size do I take for this
constant: size of word, byte, half,..?
这是一个数据段示例:
.data
array: .word 1, 2, 3
LEN = 2 ; Here's the constant
数据段大小为:3 * 32(bit) + ?(bit)
提前致谢!
我假设你正在调用 constants 到 "equates".
常量在数据段中不占用 space,只要用作操作数,它们将被它们的表达式替换,并且大小应与操作数匹配,因此在您的示例中,数据段将是使用 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 定义)
我的问题是:MIPS 中整数常量的大小是多少?
Here 我找到了它们的用法。
If I have such a constant defined in my data segment and I want to calculate the size of the data segment, what size do I take for this constant: size of word, byte, half,..?
这是一个数据段示例:
.data
array: .word 1, 2, 3
LEN = 2 ; Here's the constant
数据段大小为:3 * 32(bit) + ?(bit)
提前致谢!
我假设你正在调用 constants 到 "equates".
常量在数据段中不占用 space,只要用作操作数,它们将被它们的表达式替换,并且大小应与操作数匹配,因此在您的示例中,数据段将是使用 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 定义)