add more stuff to the lookup tables
This commit is contained in:
@@ -1560,21 +1560,94 @@ clear_output_arena:
|
||||
|
||||
tokens:
|
||||
.by_id:
|
||||
dw 0x0010 ; eax
|
||||
db 0x02 ; type: register
|
||||
db 00000010b ; reg: 000b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0000 ; rax
|
||||
db 0x02 ; type: register
|
||||
db 00000011b ; reg: 000b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0001 ; rbx
|
||||
db 0x02 ; type: register
|
||||
db 00001111b ; reg: 011b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0002 ; rcx
|
||||
db 0x02 ; type: register
|
||||
db 00000111b ; reg: 001b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0003 ; rdx
|
||||
db 0x02 ; type: register
|
||||
db 00001011b ; reg: 010b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0004 ; rsi
|
||||
db 0x02 ; type: register
|
||||
db 00011011b ; reg: 110b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0005 ; rdi
|
||||
db 0x02 ; type: register
|
||||
db 00011111b ; reg: 111b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0006 ; rsp
|
||||
db 0x02 ; type: register
|
||||
db 00010011b ; reg: 100b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0007 ; rbp
|
||||
db 0x02 ; type: register
|
||||
db 00010111b ; reg: 101b
|
||||
; width: 11b (64 bits)
|
||||
|
||||
dw 0x0010 ; eax
|
||||
db 0x02 ; type: register
|
||||
db 00000010b ; reg: 000b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0011 ; ebx
|
||||
db 0x02 ; type: register
|
||||
db 00001110b ; reg: 011b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0012 ; ecx
|
||||
db 0x02 ; type: register
|
||||
db 00000110b ; reg: 001b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0013 ; edx
|
||||
db 0x02 ; type: register
|
||||
db 00001010b ; reg: 010b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0014 ; esi
|
||||
db 0x02 ; type: register
|
||||
db 00011010b ; reg: 110b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0015 ; edi
|
||||
db 0x02 ; type: register
|
||||
db 00011110b ; reg: 111b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0016 ; esp
|
||||
db 0x02 ; type: register
|
||||
db 00010010b ; reg: 100b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x0017 ; ebp
|
||||
db 0x02 ; type: register
|
||||
db 00010110b ; reg: 101b
|
||||
; width: 10b (32 bits)
|
||||
|
||||
dw 0x004F ; hlt
|
||||
db 0x01 ; type: operator
|
||||
db 0x00 ; # operands
|
||||
|
||||
dw 0x0050 ; int3
|
||||
db 0x01 ; type: operator
|
||||
db 0x00 ; # operands
|
||||
|
||||
dw 0x0053 ; xor
|
||||
db 0x01 ; type: operator
|
||||
db 0x02 ; # operands
|
||||
@@ -1583,23 +1656,39 @@ tokens:
|
||||
db 0x01 ; type: operator
|
||||
db 0x01 ; # operands
|
||||
|
||||
dw 0x0055 ; dec
|
||||
db 0x01 ; type: operator
|
||||
db 0x01 ; # operands
|
||||
|
||||
dw 0x0056 ; mov
|
||||
db 0x01 ; type: operator
|
||||
db 0x02 ; # operands
|
||||
|
||||
dw 0x004F ; hlt
|
||||
dw 0x0057 ; add
|
||||
db 0x01 ; type: operator
|
||||
db 0x02 ; # operands
|
||||
|
||||
dw 0x0058 ; sub
|
||||
db 0x01 ; type: operator
|
||||
db 0x02 ; # operands
|
||||
|
||||
dw 0x0059 ; call
|
||||
db 0x01 ; type: operator
|
||||
db 0x01 ; # operands
|
||||
|
||||
dw 0x005A ; ret
|
||||
db 0x01 ; type: operator
|
||||
db 0x00 ; # operands
|
||||
|
||||
dw 0x005B ; cmp
|
||||
db 0x01 ; type: operator
|
||||
db 0x02 ; # operands
|
||||
.by_id_end:
|
||||
.operators:
|
||||
dd "je"
|
||||
dw 0x005C
|
||||
dd "jg"
|
||||
dw 0x005F
|
||||
dd "jl"
|
||||
dw 0x0061
|
||||
dd "hlt"
|
||||
dw 0x004F
|
||||
dd "int3"
|
||||
dw 0x0050
|
||||
dd "xor"
|
||||
dw 0x0053
|
||||
dd "inc"
|
||||
@@ -1612,20 +1701,12 @@ tokens:
|
||||
dw 0x0057
|
||||
dd "sub"
|
||||
dw 0x0058
|
||||
dd "call"
|
||||
dw 0x0059
|
||||
dd "ret"
|
||||
dw 0x005A
|
||||
dd "cmp"
|
||||
dw 0x005B
|
||||
dd "jne"
|
||||
dw 0x005D
|
||||
dd "jge"
|
||||
dw 0x005E
|
||||
dd "jle"
|
||||
dw 0x0060
|
||||
dd "int3"
|
||||
dw 0x0050
|
||||
dd "call"
|
||||
dw 0x0059
|
||||
.operators_end:
|
||||
.registers:
|
||||
dd "r8"
|
||||
@@ -1790,21 +1871,51 @@ tokens:
|
||||
|
||||
opcodes:
|
||||
.by_id:
|
||||
dw 0x004F ; hlt
|
||||
db 0xF4 ; .
|
||||
db 0x00 ;
|
||||
|
||||
dw 0x0050 ; int3
|
||||
db 0xCC ;
|
||||
db 0x00 ;
|
||||
|
||||
dw 0x0053 ; xor
|
||||
db 0x31 ; r/m <- reg
|
||||
db 0x33 ; reg <- r/m
|
||||
|
||||
dw 0x0054 ; inc
|
||||
db 0xFF ; r/m
|
||||
db 0x00 ;
|
||||
db 0xFF ; r/m <-
|
||||
db 0x00 ; reg bits
|
||||
|
||||
dw 0x0055 ; dec
|
||||
db 0xFF ; r/m <-
|
||||
db 0x01 ; reg bits
|
||||
|
||||
dw 0x0056 ; mov
|
||||
db 0x89 ; r/m <- reg
|
||||
db 0x8B ; reg <- r/m
|
||||
|
||||
dw 0x004F ; hlt
|
||||
db 0xF4 ; .
|
||||
db 0x00 ;
|
||||
dw 0x0057 ; add
|
||||
db 0x01 ; r/m <- reg
|
||||
db 0x03 ; reg <- r/m
|
||||
|
||||
dw 0x0058 ; sub
|
||||
db 0x29 ; r/m <- reg
|
||||
db 0x2B ; reg <- r/m
|
||||
|
||||
; TODO deal with rel values, differentiate 16/32 and 64 for call
|
||||
dw 0x0059 ; call
|
||||
db 0xFF ; r/m <-
|
||||
db 0x02 ; reg bits
|
||||
|
||||
; TODO deal with optional parameter
|
||||
dw 0x005A ; ret
|
||||
db 0xC3 ; opcode
|
||||
db 0x00 ; reserved
|
||||
|
||||
dw 0x005B ; cmp
|
||||
db 0x39 ; r/m <- reg
|
||||
db 0x3B ; reg <- r/m
|
||||
.by_id_end:
|
||||
|
||||
msg_welcome db "Welcome to Twasm", 0x0A, 0x00
|
||||
|
||||
Reference in New Issue
Block a user