Sunday, 19 February 2017

Branch I-form


b target_addr (AA=0 LK=0)
ba target_addr (AA=1 LK=0)
bl target_addr (AA=0 LK=1)   
bla target_addr (AA=1 LK=1)

if AA then NIA <-- iea EXTS(LI || 0b00)
else NIA <-- iea CIA + EXTS(LI || 0b00)
if LK then LR <--iea CIA + 4

target_addr specifies the branch target address.

If AA=0 then the branch target address is the sum of
LI || 0b00 sign-extended and the address of this
instruction
, with the high-order 32 bits of the branch target
address set to 0 in 32-bit mode.

If AA=1 then the branch target address is the value
LI || 0b00 sign-extended, with the high-order 32 bits of
the branch target address set to 0 in 32-bit mode.

If LK=1 then the effective address of the instruction following
the Branch instruction is placed into the Link
Register.

 
Special Registers Altered:
LR (if LK=1)

Note:  bl ADDRESS usually used to do subroutine call to address ADDRESS

No comments:

Post a Comment