Commit graph

4100 commits

Author SHA1 Message Date
Fabian 3bcd997904 fix: rare conditional jump with double fallthrough doesn't set eip correctly 2022-11-26 14:11:19 -06:00
Fabian 1588687e2a optimise flag generation after adc/sbb 2022-11-26 14:11:19 -06:00
Fabian 6524bbc569 Use local for condition generation after shifts 2022-11-26 14:11:19 -06:00
Belle Aerni aaa583659c Correct docker image for no limiter 2022-11-21 08:52:56 +09:00
Fabian 3880583470 Use uint8array.slice over new Uint8Array().set(uint8array.subarray) 2022-11-15 10:14:28 +09:00
Fabian adb7fe5441 allow entering jit after page walk 2022-11-15 10:14:28 +09:00
Fabian fc520f2876 allow directory as partfile 2022-11-15 10:14:28 +09:00
Fabian 756ce66888 movs: fast path for unaligned src/dst 2022-11-15 10:14:28 +09:00
Fabian 685c39177f movs: fast copy into svga lfb 2022-11-15 10:14:28 +09:00
Fabian 70cf369d18 collect stats about segment offsets 2022-11-15 10:14:28 +09:00
Fabian eea5cb67b0 include CS in flat_segments 2022-11-15 10:14:28 +09:00
Fabian 23a6994a14 test v86-in-v86 2022-11-15 10:14:28 +09:00
Fabian 8bf7a6aac0 generate better conditions after shl/shr/sar with constant shift count 2022-11-15 10:14:28 +09:00
Fabian 71d36b234f when generating code for a page, use original state flags 2022-11-15 10:14:28 +09:00
Fabian 753a6d1fb3 jit: handle fpu DA group 2022-11-15 10:14:28 +09:00
Fabian c5ff1d4961 dead code 2022-11-15 10:14:28 +09:00
Fabian 16662ec979 jit: handle {66,}0f17 2022-11-15 10:14:28 +09:00
Fabian 1c8e1bbdfa jit: handle {66,}0f16 2022-11-15 10:14:28 +09:00
Fabian 3e22884a4a improve logging in elf 2022-11-15 10:14:28 +09:00
Fabian d254a6b7b6 refactor cycle_internal 2022-11-15 10:14:28 +09:00
Fabian cdaf8dca3d inline function that is only called once 2022-11-15 10:14:28 +09:00
Fabian 7fb9654920 avoid calling jit_dirty_page after page walk in jit mode 2022-11-15 10:14:28 +09:00
Fabian 9ecee545c8 fix spurious make error 2022-11-15 10:14:28 +09:00
Fabian 0596b25f70 improve page heat calculation (combine with recording of entry points) 2022-11-15 10:14:28 +09:00
Fabian af32a64a3e log reason for running in interpreted mode when state flags don't match 2022-11-15 10:14:28 +09:00
Fabian 43271295c0 late c2rust cleanup, fix panic in idiv16 in debug build 2022-11-15 10:14:28 +09:00
Fabian 574673e476 add tests for idiv overflow 2022-11-15 10:14:28 +09:00
Fabian 6989ba001a log the remaining unoptimised conditionals 2022-11-15 10:14:28 +09:00
Fabian e9a3fc5b00 consider add/inc/dec; jbe optimised in its current form 2022-11-15 10:14:28 +09:00
Fabian 37841eb0c9 optimise and/or/xor/test; jc/jo/jbe/jl/jle 2022-11-15 10:14:28 +09:00
Fabian da1c713252 optimise inc/dec; jcc 2022-11-15 10:14:28 +09:00
Fabian 625ad2802c optimise add; jo 2022-11-15 10:14:28 +09:00
Fabian f8cbf3b2bd optimise add; jc 2022-11-15 10:14:28 +09:00
Fabian 60b555107f identify add for the purpose of optimising conditions 2022-11-15 10:14:28 +09:00
Fabian 92313f582c optimise sub; jle 2022-11-15 10:14:28 +09:00
Fabian 228934d616 optimise sub; jl 2022-11-15 10:14:28 +09:00
Fabian 949081837b optimise sub; jbe 2022-11-15 10:14:28 +09:00
Fabian 7d6a3c67e4 optimise sub8; jo/jb 2022-11-15 10:14:28 +09:00
Fabian bb0f37bbce optimise sub; jc 2022-11-15 10:14:28 +09:00
Fabian 8f15b554ee optimise cmp8/16 x, imm; jc 2022-11-15 10:14:28 +09:00
Fabian d629984627 optimise cmp reg, reg/imm; jz 2022-11-15 10:14:28 +09:00
Fabian 19b2771c40 optimise getsf 2022-11-15 10:14:28 +09:00
Fabian db65dd352d optimise test x, x followed by jz/js 2022-11-15 10:14:28 +09:00
Fabian 0ea7c7cd81 optimise getof 2022-11-15 10:14:28 +09:00
Fabian 6fcbe7b3d0 optimise cmp x, 0; jz 2022-11-15 10:14:28 +09:00
Fabian 1d55116779 optimise get_last_op1 (for cmp32) 2022-11-15 10:14:28 +09:00
Fabian 5a7c946e83 optimise get_last_result 2022-11-15 10:14:28 +09:00
Fabian d766863a27 nasmtests: generate single executable for both test and reference 2022-11-15 10:14:28 +09:00
Fabian a11eb20326 type safety 2022-11-15 10:14:28 +09:00
Fabian 58f9902057 merge updates to last_op_size and flags_changed 2022-11-15 10:14:28 +09:00