I'm so confused about beq function in assembly MIPS.
Lets assume I have beq $t1 $t2 60
, so it would be mapped as I type function. so we could say for example assuming that beq mapped to
100100 , $t1=5 , $t2=4, and immediate 60
so the block of IP type instruction is:
100100 | 5 | 4 | 60
but what's confused me that beq means if $t1 = $t2 then it would jump 60 steps from the offset PC ..
so the I type instruction should be mapped to
100100 | 5 | 5 | 60
so the implementation mapping of registers should be 5 and 5 .. not 5 and 4 , am I right? because beq
means $t1=$t2
…so must the mapping instruction of registers of that instruction must be
100100 | 5 | 5 | 60 and not
100100 | 5 | 4 | 60
so what should that instruction mapped?
to 100100 | 5 | 4 | 60
or to 100100 | 5 | 5 | 60 ?
Best Answer
The numbers for
rs
andrt
are the indexes of the GPRs to compare. The values stored in these registers are to be compared.For your example with some exemplary values: If
R5
contains the value 23 andR4
the value 42, the branch will not be taken. But ifR4
holds also the value 23, the branch will be taken.Note: Since I don't use MIPS regularly I might be wrong. But
100100
is the opcode forlbu
, isn't it? I found000100
as the opcode forbeq
.