VM02/src/class.inc

57 lines
1.7 KiB
PHP
Executable File

;*
;* JAVA CLASS STRUCTURE
;*
;*
;* CLASS STRUCTURE - 24 BYTES + CONST POOL
;*
.DEFINE CLASSBASESZ 24 ; BASE CLASS SIZE = 24 BYTES
.DEFINE CLASSTHIS $00 ; 2 BYTES - HSTR
.DEFINE CLASSSUPER $02 ; 1 BYTE - CLASS INDEX
.DEFINE CLASSLOADER $03 ; 1 BYTE - CLASS INDEX
.DEFINE CLASSINSTSIZE $04 ; 2 BYTES - U2
.DEFINE CLASSACCESS $06 ; 2 BYTES - U2
.DEFINE CLASSCONSTCNT $08 ; 2 BYTES - U2
.DEFINE CLASSIFACECNT $0A ; 1 BYTE - U1
.DEFINE CLASSFIELDCNT $0B ; 1 BYTE - U1
.DEFINE CLASSMETHODCNT $0C ; 1 BYTE - U1
.DEFINE CLASSVTBLCNT $0D ; 1 BYTE - U1
.DEFINE CLASSIFACETBL $0E ; 2 BYTES - HMEM
.DEFINE CLASSFIELDTBL $10 ; 2 BYTES - HMEM
.DEFINE CLASSMETHODTBL $12 ; 2 BYTES - HMEM
.DEFINE CLASSVIRTBL $14 ; 2 BYTES - HMEM
.DEFINE CLASSLOCKCNT $16 ; 2 BYTES - U2
.DEFINE CLASSCONSTPL $18 ; CLASSCONSTCNT * CONSTPLRECSZ BYTES
;*
;* CONSTANT POOL RECORD SIZE - 5 BYTES (1 BYTE TYPE, 4 BYTES VALUE)
;*
.DEFINE CONSTPLRECSZ 5
.IMPORT MUL5
.MACRO CALC_CONSTPLRECSZ
JSR MUL5
.ENDMACRO
;*
;* FIELD TABLE RECORD - 9 BYTES
;*
.DEFINE FIELDRECSZ 10
.DEFINE FIELDACCESS $00 ; 1 BYTE - U1
.DEFINE FIELDNAME $01 ; 2 BYTES - HSTR
.DEFINE FIELDDESC $03 ; 2 BYTES - HSTR
.DEFINE FIELDTYPE $05 ; 1 BYTE - U1
.DEFINE FIELDINSTOFFSET $06 ; 2 BYTES - U2
.DEFINE FIELDSTATICVAL $06 ; 4 BYTES - U4 (UNION WITH INST OFFSET)
.IMPORT MUL10
.DEFINE MUL_FIELDRECSZ MUL10
;*
;* METHOD TABLE RECORD - 9 BYTES
;*
.DEFINE METHODRECSZ 9
.DEFINE METHODACCESS $00 ; 2 BYTES - U2
.DEFINE METHODNAME $02 ; 2 BYTES - HSTR
.DEFINE METHODDESC $04 ; 2 BYTES - HSTR
.DEFINE METHODPARAMS $06 ; 1 BYTE - U1
.DEFINE METHODSTATICODE $07 ; 2 BYTES - HCODE FOR STATIC CODE
.DEFINE METHODVINDEX $07 ; 2 BYTES - INDEX TO VTABLE (UNION WITH HCODE)
.IMPORT MUL9
.DEFINE MUL_METHODRECSZ MUL9