;----------------------------------------------------------------------------- ; BEQ -- Branch on equal. ; Branches if the two registers are equal. ; Operation: if $s == $t advance_pc(offset << 2)); ; else advance_pc(4); ; Syntax: beq $s, $t, offset ; Encoding: 0001 00ss ssst tttt iiii iiii iiii iiii ;----------------------------------------------------------------------------- align GRAIN, db 0x90 _i_beq: IType ; Load Imm, rS, rT Fields mov nPC, PC ; nPC := PC add nPC, 0x4 ; nPC := nPC + 4 SX18_4N Imm ; Sign Extend Imm * 4 mov TMP, R(rS) ; TMP := Regs[rS] cmp TMP, R(rT) ; CMP(TMP, Regs[rT]) mov TMP, 0x4 ; TMP := 4 cmove TMP, Imm ; If Regs[rS] = Regs[rT], TMP := Imm add nPC, TMP ; nPC := nPC + TMP Flg_On InDelaySlot ; Set 'Delay Slot' Flag. jmp _end_cycle ;-----------------------------------------------------------------------------