Skip to content

.STRUCTREFREF

Nunuhara Cabbage edited this page May 2, 2020 · 3 revisions

.STRUCTREFREF <struct_type> <member_name>

Macro Arguments

ident struct_type - Name of the struct type
ident member_name - Name of the struct member

Stack Arguments

None.

Description

Dereference the value of a struct member (putting it on the stack).

Macro Expansion

.STRUCTREFREF struct_type member_name

Expands to,

PUSHSTRUCTPAGE
PUSH <varno>
REFREF

where <varno> is the index of the member my_var in the struct page of the current function. my_var must be a reference to an immediate type (int or float).

Instructions

The Stack
PUSH
POP
F_PUSH
S_PUSH
S_POP
SR_POP
DUP
DUP2
DUP_X2
DUP2_X1
DUP_U2
SWAP
Variables/Pages
REF
REFREF
S_REF
SR_REF
SR_REF2
ASSIGN
F_ASSIGN
SR_ASSIGN
R_ASSIGN
FT_ASSIGNS
LI_ASSIGN
NEW
DELETE
SP_INC
PUSHGLOBALPAGE
PUSHLOCALPAGE
PUSHSTRUCTPAGE
SH_GLOBALREF
SH_LOCALREF
SH_STRUCTREF
SH_LOCALASSIGN
SH_LOCALINC
SH_LOCALDEC
SH_LOCALCREATE
SH_LOCALDELETE
Control Flow
CALLFUNC
CALLFUNC2
CALLMETHOD
CALLHLL
CALLSYS
RETURN
JUMP
IFZ
IFNZ
SWITCH
STRSWITCH
ASSERT
Integer Operations
INV
NOT
COMPL
ADD
SUB
MUL
DIV
MOD
AND
OR
XOR
LSHIFT
RSHIFT
PLUSA
MINUSA
MULA
DIVA
MODA
ANDA
ORA
XORA
LSHIFTA
RSHIFTA
LT
GT
LTE
GTE
NOTE
EQUALE
Floating Point Operations
F_INV
F_ADD
F_SUB
F_MUL
F_DIV
F_PLUSA
F_MINUSA
F_MULA
F_DIVA
F_LT
F_GT
F_LTE
F_GTE
F_NOTE
F_EQUALE
String Operations
S_ADD
S_ASSIGN
S_PLUSA
S_PLUSA2
S_NOTE
S_EQUALE
S_LENGTH
S_LENGTH2
S_LENGTHBYTE
S_LENGTHBYTE2
S_LT
S_GT
S_LTE
S_GTE
S_EMPTY
S_FIND
S_GETPART
S_PUSHBACK
S_PUSHBACK2
S_POPBACK
S_POPBACK2
S_MOD
S_ERASE
S_ERASE2
C_REF
C_ASSIGN
Array Operations
A_REF
A_ALLOC
A_REALLOC
A_FREE
A_NUMOF
A_COPY
A_FILL
A_PUSHBACK
A_POPBACK
A_EMPTY
A_ERASE
A_INSERT
A_SORT
A_FIND
A_REVERSE
Long Integer Operations
LI_ADD
LI_SUB
LI_MUL
LI_DIV
LI_MOD
LI_PLUSA
LI_MINUSA
LI_MULA
LI_DIVA
LI_MODA
LI_ANDA
LI_ORA
LI_XORA
LI_LSHIFTA
LI_RSHIFTA
LI_INC
LI_DEC
Type Conversion
FTOI
ITOF
I_STRING
STOI
ITOB
FTOS
ITOLI
Other
INC
DEC
MSG
FUNC
ENDFUNC
EOF
R_EQUALE
R_NOTE
OBJSWAP

Macros

.GLOBALREF
.GLOBALREFREF
.GLOBALINC
.GLOBALDEC
.GLOBALASSIGN
.LOCALREF
.LOCALREFREF
.LOCALINC
.LOCALDEC
.LOCALASSIGN
.LOCALCREATE
.LOCALDELETE
.STRUCTREF
.STRUCTREFREF
.STRUCTINC
.STRUCTDEC
.STRUCTASSIGN

Clone this wiki locally