我遇到了MIPS架构的问题。
我需要为这段代码计算代码大小和数据访问权限。 我知道
操作码= 1个字节
内存地址长度= 2个字节长度
所有数据操作数= 4个字节长度
我的代码解决了这个等式:y =(A-B)/(C + D * C)
LD $S1, d($t1)
LD $S2, e($t1)
MPY $S1,$S2,$S1
LD $S2,C($T1)
ADD $S1,$S2,$S1
LD $S2, a($tS1)
LD $S3 ,b($t1)
SUB $S2,$S2,$S3
DIV $S1,$S2,$S2
ST Y($T1),$S1`
答案 0 :(得分:0)
要做的第一步是检查哪些是“真实指令”,哪些是伪指令。
编译代码时,请按说明操作 例如,从here您可以在MIPS中找到完整的说明列表,从here您可以找到伪指令列表。
在您的代码中,您可以找到真实指令ADD & SUB
,每个32位。
我认为你的MPY
代表MUL
,这又是一个真实的指令,所以再次是32位。
DIV
是由两个赋值形成的指令(一个用于余数的商1),所以64位。
我想,根据您的代码和您的意思,LD
代表LB
,这是一个单行指令,32位。
给出这些假设,
LD $S1, d($t1) 32 bit
LD $S2, e($t1) 32 bit
MPY $S1,$S2,$S1 32 bit
LD $S2,C($T1) 32 bit
ADD $S1,$S2,$S1 32 bit
LD $S2, a($tS1) 32 bit
LD $S3 ,b($t1) 32 bit
SUB $S2,$S2,$S3 32 bit
DIV $S1,$S2,$S2 64 bit
ST Y($T1),$S1 32 bit
我不确定我的假设,但如果它们不正确,那么无论如何都是找到代码大小的正确方法。