Files
BlitzNext/compiler/lib/tnode.txt
T

82 lines
1.7 KiB
Plaintext
Raw Normal View History

2014-01-31 08:23:00 +13:00
Notes:
lexpr is LHS sub-expression.
rexpr is RHS sub-expression.
iconst is generic int value.
sconst is generic string value
LABEL(sconst)
generate code label
JUMP(sconst)
jump to global sconst
JUMPT(lexpr,sconst)
jump to sconst if INT lexpr<>0
JUMPF(lexpr,sconst)
jump to sconst if INT lexpr==0
JUMPGE(lexpr,rexpr,sconst)
jump to sconst if INT lexpr>=INT rexpr
SEQ(lexpr,rexpr)
execute lexpr, rexpr in any order. results not used.
MOVE(lexpr,rexpr)
move lexpr to rexpr. rexpr always a MEM.
MEM(lexpr)
contents of mem in lexpr - except for RHS of MOVE.
LOCAL(iconst)
address of local var at offset iconst
GLOBAL(sconst)
address of global var at sconst
ARG(iconst)
address of argument var at offset iconst
CONST(iconst)
constant
CALL(lexpr,rexpr,iconst)
create argframe of size iconst. eval rexpr and discard result.
call address in lexpr. destroy argframe.
RETURN(lexpr,sconst)
eval INT lexpr into int return reg and jump to sconst
CAST(lexpr)
convert FP lexpr to INT.
NEG,NOT,
INT unary expressions. lexpr always int. result int.
AND,OR,EOR,SHL,SHR,ASR,ADD,SUB,MUL,DIV
INT binary expressions. lexpr and rexpr always int. result int.
SETEQ,SETNE,SETLT,SETGT,SETLE,SETGE
INT releational expressions. result '1' if INT lexpr,rexpr comparison
true else '0'.
FCALL
like CALL but result is in FP return reg.
FRETURN(lexpr)
like RETURN, but put result into FP return reg. lexpr always FP.
FCAST(lexpr)
convert INT lexpr to FP.
FNEG
FP unary operators. lexpr always FP, result FP.
FADD,FSUB,FMUL,FDIV,
FP binary operators. lexpr, rexpr always FP, result FP
FSETEQ,FSETNE,FSETLT,FSETGT,FSETLE,FSETGE,
FP relational operators. lexpr, rexpr always FP. result INT!