mirror of
https://github.com/dschmenk/VM02.git
synced 2024-06-07 18:29:28 +00:00
397 lines
8.9 KiB
ArmAsm
397 lines
8.9 KiB
ArmAsm
|
;*
|
||
|
;* DUMMY JAVA OBJECT CLASSE FOR 6502
|
||
|
;*
|
||
|
;*
|
||
|
;* CLASS FILE Object.class
|
||
|
;*
|
||
|
.BYTE $CA,$FE,$BA,$BE ; MAGIC
|
||
|
.BYTE $00,$00 ; MINOR 0
|
||
|
.BYTE $00,$31 ; MAJOR 49
|
||
|
;*
|
||
|
;* CONSTANT POOL
|
||
|
;*
|
||
|
.BYTE $00,$1A ; CONST POOL COUNT 26
|
||
|
;* CONST POOL INDEX 1
|
||
|
.BYTE $0A ; METHODREF
|
||
|
.BYTE $00,$03 ; CLASS #3
|
||
|
.BYTE $00,$17 ; NAME AND TYPE #23
|
||
|
;* CONST POOL INDEX 2
|
||
|
.BYTE 07 ; CLASS
|
||
|
.BYTE $00,$19 ; #25
|
||
|
;* CONST POOL INDEX 3
|
||
|
.BYTE 07 ; CLASS
|
||
|
.BYTE $00,$00 ; #0
|
||
|
;* CONST POOL INDEX 4
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$06 ; STRLEN
|
||
|
.BYTE "<init>"
|
||
|
;* CONST POOL INDEX 5
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$03 ; STRLEN
|
||
|
.BYTE "()V"
|
||
|
;* CONST POOL INDEX 6
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$04 ; STRLEN
|
||
|
.BYTE "Code"
|
||
|
;* CONST POOL INDEX 7
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$05 ; STRLEN
|
||
|
.BYTE "clone"
|
||
|
;* CONST POOL INDEX 8
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$14 ; STRLEN
|
||
|
.BYTE "()Ljava/lang/Object;"
|
||
|
;* CONST POOL INDEX 9
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$06 ; STRLEN
|
||
|
.BYTE "equals"
|
||
|
;* CONST POOL INDEX 10
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$15 ; STRLEN
|
||
|
.BYTE "(Ljava/lang/Object;)Z"
|
||
|
;* CONST POOL INDEX 11
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$08 ; STRLEN
|
||
|
.BYTE "finalize"
|
||
|
;* CONST POOL INDEX 12
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$08 ; STRLEN
|
||
|
.BYTE "getClass"
|
||
|
;* CONST POOL INDEX 13
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$13 ; STRLEN
|
||
|
.BYTE "()Ljava/lang/Class;"
|
||
|
;* CONST POOL INDEX 14
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$08 ; STRLEN
|
||
|
.BYTE "hashCode"
|
||
|
;* CONST POOL INDEX 15
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$03 ; STRLEN
|
||
|
.BYTE "()I"
|
||
|
;* CONST POOL INDEX 16
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$06 ; STRLEN
|
||
|
.BYTE "notify"
|
||
|
;* CONST POOL INDEX 17
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$09 ; STRLEN
|
||
|
.BYTE "notifyAll"
|
||
|
;* CONST POOL INDEX 18
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$08 ; STRLEN
|
||
|
.BYTE "toString"
|
||
|
;* CONST POOL INDEX 19
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$14 ; STRLEN
|
||
|
.BYTE "()Ljava/lang/String;"
|
||
|
;* CONST POOL INDEX 20
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$04 ; STRLEN
|
||
|
.BYTE "wait"
|
||
|
;* CONST POOL INDEX 21
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$04 ; STRLEN
|
||
|
.BYTE "(J)V"
|
||
|
;* CONST POOL INDEX 22
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$05 ; STRLEN
|
||
|
.BYTE "(JI)V"
|
||
|
;* CONST POOL INDEX 23
|
||
|
.BYTE $0C ; NAME AND TYPE
|
||
|
.BYTE $00,$04 ; NAME #4
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
;* CONST POOL INDEX 24
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$04 ; STRLEN
|
||
|
.BYTE "6502"
|
||
|
;* CONST POOL INDEX 25
|
||
|
.BYTE $01 ; UTF8
|
||
|
.BYTE $00,$10 ; STRLEN
|
||
|
.BYTE "java/lang/Object"
|
||
|
;*
|
||
|
;* ACCESS FLAGS
|
||
|
;*
|
||
|
.BYTE $00,$21 ; 0x0021
|
||
|
;*
|
||
|
;* THIS CLASS
|
||
|
;*
|
||
|
.BYTE $00,$02 ; #2
|
||
|
;*
|
||
|
;* SUPER CLASS
|
||
|
;*
|
||
|
.BYTE $00,$00 ; #0
|
||
|
;*
|
||
|
;* INTERFACES
|
||
|
;*
|
||
|
.BYTE $00,$00 ; IFACE COUNT 0
|
||
|
;*
|
||
|
;* FIELDS
|
||
|
;*
|
||
|
.BYTE $00,$00 ; FIELD COUNT 0
|
||
|
;*
|
||
|
;* METHODS
|
||
|
;*
|
||
|
.BYTE $00,$0C ; METHOD COUNT 12
|
||
|
;******* METHOD INDEX 0 ********
|
||
|
.BYTE $01,$01 ; ACCESS FLAGS 0x0101
|
||
|
.BYTE $00,$04 ; NAME #4
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,24 ; NAME #24
|
||
|
.BYTE $00,$00,>(M0A0END-M0A0BGN),<(M0A0END-M0A0BGN)
|
||
|
M0A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M0C0END-M0C0BGN),<(M0C0END-M0C0BGN)
|
||
|
M0C0BGN:
|
||
|
RTS
|
||
|
M0C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M0A0END:
|
||
|
;******* METHOD INDEX 1 ********
|
||
|
.BYTE $00,$04 ; ACCESS FLAGS 0x0004
|
||
|
.BYTE $00,$07 ; NAME #7
|
||
|
.BYTE $00,$08 ; DESC #8
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M1A0END-M1A0BGN),<(M1A0END-M1A0BGN)
|
||
|
M1A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M1C0END-M1C0BGN),<(M1C0END-M1C0BGN)
|
||
|
M1C0BGN:
|
||
|
.BYTE $01 ; 00000: aconst_null
|
||
|
.BYTE $B0 ; 00001: areturn
|
||
|
M1C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M1A0END:
|
||
|
;******* METHOD INDEX 2 ********
|
||
|
.BYTE $00,$01 ; ACCESS FLAGS 0x0001
|
||
|
.BYTE $00,$09 ; NAME #9
|
||
|
.BYTE $00,$0A ; DESC #10
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M2A0END-M2A0BGN),<(M2A0END-M2A0BGN)
|
||
|
M2A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$02 ; MAX LOCALS 2
|
||
|
.BYTE $00,$00,>(M2C0END-M2C0BGN),<(M2C0END-M2C0BGN)
|
||
|
M2C0BGN:
|
||
|
.BYTE $04 ; 00000: iconst_1
|
||
|
.BYTE $AC ; 00001: ireturn
|
||
|
M2C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M2A0END:
|
||
|
;******* METHOD INDEX 3 - finalize ********
|
||
|
.BYTE $01,$04 ; ACCESS FLAGS 0x0104
|
||
|
.BYTE $00,$0B ; NAME #11
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,24 ; NAME #24
|
||
|
.BYTE $00,$00,>(M3A0END-M3A0BGN),<(M3A0END-M3A0BGN)
|
||
|
M3A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M3C0END-M3C0BGN),<(M3C0END-M3C0BGN)
|
||
|
M3C0BGN:
|
||
|
RTS
|
||
|
M3C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M3A0END:
|
||
|
;******* METHOD INDEX 4 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$0C ; NAME #12
|
||
|
.BYTE $00,$0D ; DESC #13
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M4A0END-M4A0BGN),<(M4A0END-M4A0BGN)
|
||
|
M4A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M4C0END-M4C0BGN),<(M4C0END-M4C0BGN)
|
||
|
M4C0BGN:
|
||
|
.BYTE $01 ; 00000: aconst_null
|
||
|
.BYTE $B0 ; 00001: areturn
|
||
|
M4C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M4A0END:
|
||
|
;******* METHOD INDEX 5 ********
|
||
|
.BYTE $00,$01 ; ACCESS FLAGS 0x0001
|
||
|
.BYTE $00,$0E ; NAME #14
|
||
|
.BYTE $00,$0F ; DESC #15
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M5A0END-M5A0BGN),<(M5A0END-M5A0BGN)
|
||
|
M5A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M5C0END-M5C0BGN),<(M5C0END-M5C0BGN)
|
||
|
M5C0BGN:
|
||
|
.BYTE $03 ; 00000: iconst_0
|
||
|
.BYTE $AC ; 00001: ireturn
|
||
|
M5C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M5A0END:
|
||
|
;******* METHOD INDEX 6 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$10 ; NAME #16
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M6A0END-M6A0BGN),<(M6A0END-M6A0BGN)
|
||
|
M6A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M6C0END-M6C0BGN),<(M6C0END-M6C0BGN)
|
||
|
M6C0BGN:
|
||
|
.BYTE $B1 ; 00000: return
|
||
|
M6C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M6A0END:
|
||
|
;******* METHOD INDEX 7 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$11 ; NAME #17
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M7A0END-M7A0BGN),<(M7A0END-M7A0BGN)
|
||
|
M7A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M7C0END-M7C0BGN),<(M7C0END-M7C0BGN)
|
||
|
M7C0BGN:
|
||
|
.BYTE $B1 ; 00000: return
|
||
|
M7C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M7A0END:
|
||
|
;******* METHOD INDEX 8 ********
|
||
|
.BYTE $00,$01 ; ACCESS FLAGS 0x0001
|
||
|
.BYTE $00,$12 ; NAME #18
|
||
|
.BYTE $00,$13 ; DESC #19
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M8A0END-M8A0BGN),<(M8A0END-M8A0BGN)
|
||
|
M8A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$01 ; MAX STACK 1
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M8C0END-M8C0BGN),<(M8C0END-M8C0BGN)
|
||
|
M8C0BGN:
|
||
|
.BYTE $01 ; 00000: aconst_null
|
||
|
.BYTE $B0 ; 00001: areturn
|
||
|
M8C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M8A0END:
|
||
|
;******* METHOD INDEX 9 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$14 ; NAME #20
|
||
|
.BYTE $00,$05 ; DESC #5
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M9A0END-M9A0BGN),<(M9A0END-M9A0BGN)
|
||
|
M9A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$01 ; MAX LOCALS 1
|
||
|
.BYTE $00,$00,>(M9C0END-M9C0BGN),<(M9C0END-M9C0BGN)
|
||
|
M9C0BGN:
|
||
|
.BYTE $B1 ; 00000: return
|
||
|
M9C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M9A0END:
|
||
|
;******* METHOD INDEX 10 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$14 ; NAME #20
|
||
|
.BYTE $00,$15 ; DESC #21
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M10A0END-M10A0BGN),<(M10A0END-M10A0BGN)
|
||
|
M10A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$03 ; MAX LOCALS 3
|
||
|
.BYTE $00,$00,>(M10C0END-M10C0BGN),<(M10C0END-M10C0BGN)
|
||
|
M10C0BGN:
|
||
|
.BYTE $B1 ; 00000: return
|
||
|
M10C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M10A0END:
|
||
|
;******* METHOD INDEX 11 ********
|
||
|
.BYTE $00,$11 ; ACCESS FLAGS 0x0011
|
||
|
.BYTE $00,$14 ; NAME #20
|
||
|
.BYTE $00,$16 ; DESC #22
|
||
|
.BYTE $00,$01 ; ATTRIB COUNT 1
|
||
|
;* ATTRIB INDEX 0
|
||
|
.BYTE $00,$06 ; NAME #6
|
||
|
.BYTE $00,$00,>(M11A0END-M11A0BGN),<(M11A0END-M11A0BGN)
|
||
|
M11A0BGN:
|
||
|
;* CODE:
|
||
|
.BYTE $00,$00 ; MAX STACK 0
|
||
|
.BYTE $00,$04 ; MAX LOCALS 4
|
||
|
.BYTE $00,$00,>(M11C0END-M11C0BGN),<(M11C0END-M11C0BGN)
|
||
|
M11C0BGN:
|
||
|
.BYTE $B1 ; 00000: return
|
||
|
M11C0END:
|
||
|
;* EXCEPTION TABLE
|
||
|
.BYTE $00,$00 ; COUNT 0
|
||
|
;* CODE ATTRIB
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|
||
|
M11A0END:
|
||
|
;*
|
||
|
;* GLOBAL ATTRIBUTES
|
||
|
;*
|
||
|
.BYTE $00,$00 ; ATTRIB COUNT 0
|