Previous: NDS32-Regs, Up: NDS32 Syntax


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.