Fabian
|
3026e985fa
|
Jit BT
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
fc43119406
|
Optimise returns and indirect jumps/calls into same page
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
ee542c5f84
|
Optimise lazy flag handling
- remove last_add_result and last_op2 from arithmetic instructions
- optimise getcf
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
46671b5354
|
Jit inc16/dec16
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
ce0f34eff2
|
Jit cmp8/test8
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
4723249259
|
Jit more cmp16/test16
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
741d6005d2
|
Simplify
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
3a41694efb
|
Jit cmp16/test16
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
fe89acfc80
|
Jit xchg r, r/m
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
8427a30d89
|
Simplify
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
860833e80f
|
Custom inc32 & dec32
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
9da94d5438
|
Move wasm ops to WasmBuilder
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
97205c67a2
|
Rename to wasm_builder
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
23988f50f6
|
Restore xlat in jit mode
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
3a473aad79
|
Remove prefix handling from jit and exceptions
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
62010e64e8
|
Make string instructions partially custom
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
a73988a817
|
Make loop, loopz, loopnz and jcxz custom generated
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
232d3763d9
|
Make maskmov* custom
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
15a27746f6
|
Split fldenv, frstor, fsave and fstenv into 16 and 32 bit variants
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
ccd6244cfd
|
Split D9 and DD instructions by operand size
|
2020-12-31 19:14:30 -06:00 |
|
Fabian
|
764879bad1
|
s/reg32s/reg32
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
4bfd024366
|
Simplify gen_safe_read_write by removing fallback function
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
5515c32e8d
|
Correct codegen for some undefined fpu instructions
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
48940e426a
|
Fix fldm80/fstenv/fldenv: These instructions were generating and unconditional exit from jitted code but not updating eip. Changed to use the fallback mechanism for handling pagefaults
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
5e73b6f21b
|
Remove invalid assertion on sfence/mfence/lfence (low bits of modrm byte are ignored)
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
1c474eabdb
|
Fix mov [mem], sreg in 32-bit mode (should be 16-bit write)
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
c207400922
|
Fix Rust warnings
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
c97600f5cb
|
Also prepare gen_safe_read{64,128} for later optimisations
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
c5cd93678e
|
Pass local to gen_safe_read, add single function for modrm_resolve and gen_safe_read (preparation for later optimisations)
|
2020-12-31 19:14:29 -06:00 |
|
Fabian
|
aad8072aa7
|
Optimise push reg
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
f620aceb5d
|
Use LocalOrImmediate for other arithmetic instructions
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
43fcdf9fc2
|
Introduce LocalOrImmediate for more efficient parameter passing to cmp/test instructions
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
1fa0430cb5
|
Remove unused macro rules
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
1de8fe1888
|
Fix unnecessary push to stack
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
78ef12be68
|
Custom implementations for several sse instructions
- mov dword/qword [mem], xmm
- mov xmm, dword/qword [mem]
- some arithmetic
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
e99da40215
|
Make std/cld custom (FC/FD), remove unused unguarded_register and no_register properties from x86 table
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
d98e1b2f70
|
Generate code (instead of call) for 32-bit arithmetic operations
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
5da6cde13f
|
Custom codegen for cbw/cwde/cwd/cdq/pushf/sahf (98/99/9C/9E)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
701d59e0dd
|
Custom codegen for absolute cli (FA)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
ff64866e25
|
Custom codegen for absolute cmpxchg (0FB1)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
b5a72061fb
|
Custom codegen for absolute jmp/call (FF_2/FF_4)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
fb7e4d376a
|
Custom codegen for lfence (0FAE_5)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
b240a8fde9
|
Custom codegen for push sreg (06/0E/16/1E/0FA0/0FA8)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
a9dac09ceb
|
Custom codegen for xchg (91-98)
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
091b2324d9
|
Custom codegen for 8C
|
2020-12-31 19:14:28 -06:00 |
|
Fabian
|
93ffd50969
|
Custom codegen for more sse move aliases (660F29/660F6F/F30F7F)
|
2020-08-30 19:37:15 -05:00 |
|
Fabian
|
75e5c2a56f
|
Codegen for 8-bit shifts (D0/D2)
|
2020-08-30 19:37:15 -05:00 |
|
Fabian
|
815e5d338e
|
Codegen more fpu instructions and run their tests (D9_6, DA_5)
|
2020-08-30 19:37:15 -05:00 |
|
Fabian
|
fdd1dc377d
|
Custom codegen for xadd (0FC1)
|
2020-08-30 19:37:15 -05:00 |
|
Fabian
|
874818866a
|
Codegen for mul32 + custom mul/imul (F7_[45])
|
2020-08-30 19:37:15 -05:00 |
|