#### 9.30.2.3 Pseudo Instructions

`li rt5,imm32`

  load 32-bit integer into register rt5. ‘`sethi rt5,hi20(imm32)`’ and then ‘`ori rt5,reg,lo12(imm32)`’.

`la rt5,var`

  Load 32-bit address of var into register rt5. ‘`sethi rt5,hi20(var)`’ and then ‘`ori reg,rt5,lo12(var)`’

`l.[bhw] rt5,var`

  Load value of var into register rt5. ‘`sethi $ta,hi20(var)`’ and then ‘`l[bhw]i rt5,[$ta+lo12(var)]`’

`l.[bh]s rt5,var`

  Load value of var into register rt5. ‘`sethi $ta,hi20(var)`’ and then ‘`l[bh]si rt5,[$ta+lo12(var)]`’

`l.[bhw]p rt5,var,inc`

  Load value of var into register rt5 and increment $ta by amount inc. ‘`la $ta,var`’ and then ‘`l[bhw]i.bi rt5,[$ta],inc`’

`l.[bhw]pc rt5,inc`

  Continue loading value of var into register rt5 and increment $ta by amount inc. ‘`l[bhw]i.bi rt5,[$ta],inc.`’

`l.[bh]sp rt5,var,inc`

  Load value of var into register rt5 and increment $ta by amount inc. ‘`la $ta,var`’ and then ‘`l[bh]si.bi rt5,[$ta],inc`’

`l.[bh]spc rt5,inc`

  Continue loading value of var into register rt5 and increment $ta by amount inc. ‘`l[bh]si.bi rt5,[$ta],inc.`’

`s.[bhw] rt5,var`

  Store register rt5 to var. ‘`sethi $ta,hi20(var)`’ and then ‘`s[bhw]i rt5,[$ta+lo12(var)]`’

`s.[bhw]p rt5,var,inc`

  Store register rt5 to var and increment $ta by amount inc. ‘`la $ta,var`’ and then ‘`s[bhw]i.bi rt5,[$ta],inc`’

`s.[bhw]pc rt5,inc`

  Continue storing register rt5 to var and increment $ta by amount inc. ‘`s[bhw]i.bi rt5,[$ta],inc.`’

`not rt5,ra5`

  Alias of ‘`nor rt5,ra5,ra5`’.

`neg rt5,ra5`

  Alias of ‘`subri rt5,ra5,0`’.

`br rb5`

  Depending on how it is assembled, it is translated into ‘`r5 rb5`’ or ‘`jr rb5`’.

`b label`

  Branch to label depending on how it is assembled, it is translated into ‘`j8 label`’, ‘`j label`’, or "‘`la $ta,label`’ ‘`br $ta`’".

`bral rb5`

  Alias of jral br5 depending on how it is assembled, it is translated into ‘`jral5 rb5`’ or ‘`jral rb5`’.

`bal fname`

  Alias of jal fname depending on how it is assembled, it is translated into ‘`jal fname`’ or "‘`la $ta,fname`’ ‘`bral $ta`’".

`call fname`

  Call function fname same as ‘`jal fname`’.

`move rt5,ra5`

  For 16-bit, this is ‘`mov55 rt5,ra5`’. For no 16-bit, this is ‘`ori rt5,ra5,0`’.

`move rt5,var`

  This is the same as ‘`l.w rt5,var`’.

`move rt5,imm32`

  This is the same as ‘`li rt5,imm32`’.

`pushm ra5,rb5`

  Push contents of registers from ra5 to rb5 into stack.

`push ra5`

  Push content of register ra5 into stack. (same ‘`pushm ra5,ra5`’).

`push.d var`

  Push value of double-word variable var into stack.

`push.w var`

  Push value of word variable var into stack.

`push.h var`

  Push value of half-word variable var into stack.

`push.b var`

  Push value of byte variable var into stack.

`pusha var`

  Push 32-bit address of variable var into stack.

`pushi imm32`

  Push 32-bit immediate value into stack.

`popm ra5,rb5`

  Pop top of stack values into registers ra5 to rb5.

`pop rt5`

  Pop top of stack value into register. (same as ‘`popm rt5,rt5`’.)

`pop.d var,ra5`

  Pop value of double-word variable var from stack using register ra5 as 2nd scratch register. (1st is $ta)

`pop.w var,ra5`

  Pop value of word variable var from stack using register ra5.

`pop.h var,ra5`

  Pop value of half-word variable var from stack using register ra5.

`pop.b var,ra5`

  Pop value of byte variable var from stack using register ra5.