[英]MIPS Code Cycle Time
我需要确定下面的MIPS代码的循环数的任务。
我的主要问题是确定条件是否不满足,是否仍在执行if语句(因此增加了总循环数)
假设采用单周期实施方案,即每个指令需要一个时钟周期来执行。 1.在以下情况下,执行代码所需的周期数是多少? s == 0? b。 s == 1?
这是我自己想到的:
一种。 9个循环
b。 8个周期(它不执行if语句中包含的指令,并且不跳到endif语句-(转到函数)然后是最后一个endif。
这是MIPS的示例:
main:
# Evaluate the expression.
# Put the final result in a0 to prepare for the syscall.
addi $sp, $sp, -4 # Make space on stack.
sw $ra, 0($sp) # Save return address.
li $t0, 1 # Put 0 in a register
li $a1, 4 # Put 4 in a register
li $a2, 6 # Put 6 in a register
if: bne $t0, $zero, else # (i == 0) ?
add $v0, $a1, $a2 # v0 = a1 + a2
j endif
else: jal func
endif:
add $a0, $v0, $zero
li $v0, 1
所以我需要确定一个循环数。 s = 1,b。 s = 0假设每条指令将花费1个周期。
为此的C代码是
main()
{
int A; a=4; b=6; s=3;
int function(a,b);
if (s==0)
A = a+b;
else
A = function(a,b)
return;
}
# Function to multiply two numbers
function(z,y)
{
int TMP;
TMP = z × y;
ret
道歉的格式化。 我在这个论坛上的第一篇文章仍在解决。 任何帮助,不胜感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.