"Memory limits" 在 mips 中使用 sw
"Memory limits" using sw in mips
假设我在 MIPS 中有以下命令:
sw $t0, 0($sp) # $sp=-4
这是否意味着寄存器$t0 被保存从0 到-3 字节或-4 到-7 字节?
堆栈在内存中向下增长,以便space 保存新数据。栈指针 $sp
指向栈顶。
栈指针$sp
从高内存地址开始递减,根据需要扩展。图(b)显示堆栈扩展
允许临时存储的两个数据字。为此,$sp
递减 8
变为 0x7FFFFFF4
。两个额外的数据字,
0xAABBCCDD
和0x11223344
,暂存栈中。
所以在你的情况下,如果我很好地理解你的问题,sw
是词可寻址的,词将存储在内存中 $sp
指向的那个位置。如果您存储下一个单词,它必须具有 4
的偏移量。
[哈里斯&哈里斯]
更新
当你使用lb
时就拿这个例子来说
假设你有这个词 0x23456789
当使用lb $s0,1([=22=])
加载字节指令后,lb $s0, 1([=23=])
,
$s0
在 big-endian 系统上包含 0x00000045
而在
小端系统。[Harris&Harris]
假设我在 MIPS 中有以下命令:
sw $t0, 0($sp) # $sp=-4
这是否意味着寄存器$t0 被保存从0 到-3 字节或-4 到-7 字节?
堆栈在内存中向下增长,以便space 保存新数据。栈指针 $sp
指向栈顶。
栈指针$sp
从高内存地址开始递减,根据需要扩展。图(b)显示堆栈扩展
允许临时存储的两个数据字。为此,$sp
递减 8
变为 0x7FFFFFF4
。两个额外的数据字,
0xAABBCCDD
和0x11223344
,暂存栈中。
所以在你的情况下,如果我很好地理解你的问题,sw
是词可寻址的,词将存储在内存中 $sp
指向的那个位置。如果您存储下一个单词,它必须具有 4
的偏移量。
[哈里斯&哈里斯]
更新
当你使用lb
时就拿这个例子来说
假设你有这个词 0x23456789
当使用lb $s0,1([=22=])
加载字节指令后,lb $s0, 1([=23=])
,
$s0
在 big-endian 系统上包含 0x00000045
而在
小端系统。[Harris&Harris]