【发布时间】:2016-10-14 14:53:08
【问题描述】:
.text
.global main
main:
addi $v0, $zero,0
la $t0, length
lw $t1, 0($t0)
la $t4, array
addi $t1, $t1, -1
sll $t1,$t1,2
loop:
add $t3, $t4,$t1
lw $t2,0($t3)
add $v0,$v0,$t2
addi $t1,$t1,-4
test:
slti $t9,$t1,0
beq $t9,$zero,loop
nop
sw $v0, 0($t0)
.data
length: .word 8
array: .word 9,8,7,6,5,4,3,2
我必须说出这段代码中有多少静态指令。我知道data之前有16条指令,我想知道.data之后写的指令是否也被认为是2条指令,总共18条指令。
【问题讨论】:
-
不,指令不是指令。
-
但是您可能需要知道数据段的基地址才能知道指令计数,因为这决定了
la将转换成多少指令。 -
这就是为什么我想知道长度是否以某种方式加载到内存中,以及它是否算作一条指令。那么,看看这段代码,你可以确认是用 16 条静态指令编写的吗?
-
不,因为我需要知道数据段在内存中的位置。如果例如数据段从
0x10000000开始,您可以将la $t0,length转换为一条指令 (lui $t0,0x1000),但如果它从例如开始0x10001000同样的la需要两条指令。