home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
oxcc1433.zip
/
DOC
/
ANF.TXT
next >
Wrap
Text File
|
1995-09-09
|
3KB
|
69 lines
ANF.TXT -- preliminary 15 May 1995 by Norman D. Culver
Architecture Neutral Format (ANF) code is generated by `oxcc' and
placed in files with a .anf suffix. The purpose of ANF code is to
allow multiple back ends to be written by users. A sample back end
is `oxccb' which converts .anf to .byt for interpretation by the
sample interpreter `bterp'.
The .anf format is given precisely in the files `oxanf.h' and `oxccb.c'.
Files are always generated in little endian format.
Each ANF instruction is 8 bytes of required info plus an optional
number of additional bytes depending upon whether the opcode uses
0,1,2 or 3 address format.
The programmer can view .anf code in human readable format by using
the -Gd option in `oxcc' which will produce a readable file with
a .dbg suffix.
Byte Meaning Format
0 opcode cccccccc 0-255
1 non zero if D address used tttsssss 0-7|0-31
2 non zero if L address used tttsssss 0-7|0-31
3 non zero if R address used tttsssss 0-7|0-31
4 unsigned size of anf instruction
5-7 always zero in file, used for linking by backends
8-n optional address elements D,L,R (no holes)
Where:
c is the opcode
t is the type of the address element
s is the size of the address element
Address element types:
0 == OPIMMED1 immediate signed value(s)
1 == OPIMMED2 immediate unsigned value(s)
2 == OPIMMED3 immediate floating value
3 == OPIMMED4 immediate pointer value
4 == OPTEMP temp designator
5 == OPRET return designator
6 == OPAUTO autovar address
7 == OPDATA data address
HEADER
Each ANF section in a file is preceeded by a header consisting of 24
bytes in the following format:
0xa5,0x30,0,0,0,0,0,0 // headerop,OPIMMED2|16,0,0,0,0,0,0
struct _hdr { /* see oxanf.h */
unsigned short major;
unsigned short minor;
char code_format;
char target_hardware;
char target_debugger;
char target_os;
char memory_model;
char obj_format;
char opt_level;
char target_assembler;
char pads[4];
};
TRAILER
A file is terminated with a trailer consisting
of 8 bytes in the following format:
0xc4,0,0,0,0,0,0,0 // endallop,0,0,0,0,0,0,0