t3x.org / t3x / t3x-manual / 4D.html
 
T3X - A Minimum Procedural Language
Version 8.1.5, Online Edition
Copyright(C) 1996-2004
Nils M Holm
 
Previous:
4.12 Predicates
TOC | Index | Back Next:
4.14 Flow Control

4.13 Load and Store Instructions

0x0039   DEREF   -   DEREFerence word

Remove two values S0 and S1, load a machine word from memory[S1/BPW+S0], zero-extend it, and push it. See also NORM.

0x003A   DREFB   -   DeREFerence Byte

Remove two values S0 and S1, load a single byte from memory::(S1+S0), zero-extend it, and push it. See also NORMB.

0xA030   LDG   A   -   LoaD Global

Push the value stored in the memory cell with the address A: memory[A/BPW].

0xA031   LDGV   A   -   LoaD Global Vector

Push the address A.

0xA034   LDI   N   -   LoaD Instance variable

Push the value located at memory[(SELF/BPW)+N]. This instruction is used to load the content of an instance variable. N specifies the offset of the variable relative to the beginning of the object's data area.

0xA035   LDIV   N   -   LoaD Instance Vector

Push the address SELF+N*BPW. This instruction is used to load the address of an instance variable. N specifies the offset of the variable relative to the beginning of the object's data area.

0xA032   LDL   N   -   LoaD Local

Push the value stored at the N'th position `below' the stack frame base. The address of the cell is computed as follows:

FP - N*BPW

Consequently, negative values of N may be used to access locations `above' the frame base.

0xA036   LDLAB   N   -   LoaD LABel

Push the address A. This instruction is similar to LDGV, but more general. It may also be used to reference procedures.

0xA033   LDLV   N   -   LoaD Local Vector

Push the absolute address of a local object. N specifies the offset of the object relative to the stack frame base. The absolute address is computed using the formula FP - N*BPW.

0x003B   NORM   -   NORMalize reference

Remove two elements S0 and S1 and compute the absolute address of the S0'th member of the vector pointed to by S1: S1 + S0*BPW. Push the computed address. This instruction converts a pointer/offset pair into a pure pointer which references the same location.

0x003C   NORMB   -   NORMalize Byte reference

Remove two elements S0 and S1 and compute the absolute address of the S0'th byte of the vector pointed to by S1 (S0+S1). Push the computed address. This instruction converts a pointer/offset pair into a pure pointer which references the same location.

0xA037   NUM   N   -   load NUMber

Push the value N.

0xA03D   SAVG   A   -   SAVe Global

Pop one element and save it in the memory cell with the address A: memory[A/BPW] := S0.

0xA03F   SAVI   N   -   SAVe Instance variable

Pop one element and save it in the memory cell

memory[(SELF/BPW)+N]

This instruction is used to alter the state of an instance variable. N specifies the offset of the variable relative to the beginning of the object's data area.

0xA03E   SAVL   N   -   SAVe Local

Pop one element and save it in the storage cell with the address FP-N*BPW. See also LDL.

0x0038   SELF   -   SELF reference

Push the content of the SELF register on the stack.

0x0041   STORB   -   STORe Byte

Pop two elements S0 and S1 and store the least significant 8 bits of S0 in the byte pointed to by S1: memory::S1 := S0.

0x0040   STORE   -   STORE word

Pop two elements S0 and S1 and store the value S0 in the memory cell pointed to by S1: memory[S1/BPW] := S0.

Previous:
4.12 Predicates
TOC | Index | Back Next:
4.14 Flow Control