Commit Graph

169 Commits

Author SHA1 Message Date
Joel Dice
eabb37e6eb add lcmp instruction to Compiler and corresponding LongCompare instruction to Assembler, since that's the only efficient way to implement the lcmp bytecode on x86 2008-06-12 10:56:48 -06:00
Joel Dice
357acbdb0f implement move4To8CR, which just defers to moveCR 2008-06-11 08:59:05 -06:00
Joel Dice
5b2065e76c only elide constant multiply if constant is one, not zero (duh) 2008-06-10 18:14:15 -06:00
Joel Dice
3b0e05b739 fix unused parameter warning 2008-06-02 08:13:20 -06:00
Joel Dice
ecfb853f17 use relative branches where possible on amd64 2008-06-02 07:49:09 -06:00
Joel Dice
65830a76c5 improve efficiency of array bounds checks and generate a thunk table for native functions called indirectly 2008-05-31 16:14:27 -06:00
Joel Dice
51256f3cc2 fix moveCM for 64-bit constants on 64-bit machines 2008-05-22 18:16:44 -06:00
Joel Dice
3326aafdac various 32-bit fixes 2008-05-22 11:15:18 -06:00
Joel Dice
651c4559db implement compareAR 2008-05-19 10:39:05 -06:00
Joel Dice
ad6153612b disallow memory,constant comparisons on x86 2008-05-19 07:43:37 -06:00
Joel Dice
b52cefa86e disallow memory operands in 32-bit comparisons on amd64 2008-05-19 07:27:05 -06:00
Joel Dice
56d8851764 constrain temporary register in moveMM according to moveMR's requirements 2008-05-18 22:28:47 -06:00
Joel Dice
4858972dbc support 64-bit subtracts on 32-bit systems; allow constant shift counts in MyAssembler::plan 2008-05-18 09:43:31 -06:00
Joel Dice
392132cb0e Merge branch 'compiler' of la.merseine.nu:p/avian-compiler into compiler 2008-05-17 21:34:46 -06:00
Joel Dice
b6b84af123 various bugfixes 2008-05-17 21:32:14 -06:00
Joel Dice
15c2eb13f2 don't generate code for a move from a register to itself 2008-05-17 18:13:27 -06:00
Joel Dice
790e2fee42 respect constraints specified by Assembler::plan in MoveEvent::compile 2008-05-16 10:01:24 -06:00
Joel Dice
d7fc4aa438 fix offset computation in compareCR and compareCM 2008-05-15 18:34:48 -06:00
Joel Dice
bbd1ee5540 various register marshalling bugfixes 2008-05-15 14:00:57 -06:00
Joel Dice
8434abaa0e implement swapRR 2008-05-14 17:33:55 -06:00
Joel Dice
73b8cc5595 fix unused variable warnings 2008-05-14 17:19:41 -06:00
Joel Dice
13d6ab023f implement addCM 2008-05-13 11:28:19 -06:00
Joel Dice
f1809897bd fix build 2008-05-06 15:13:02 -06:00
Joel Dice
2e108861da remove operand marshalling from the assembler in favor of doing it in the compiler 2008-05-04 13:09:12 -06:00
Joel Dice
7b809efd3f fix shift bugs 2008-04-30 12:44:27 -06:00
Joel Dice
918193fa60 fix 32-bit right unsigned shifts on amd64 2008-04-30 11:15:21 -06:00
Joel Dice
844841937f fix use of wrong constant in x86.cpp 2008-04-30 10:46:46 -06:00
Joel Dice
e2b24263a2 various bugfixes 2008-04-30 09:44:17 -06:00
Joel Dice
7640590153 implement orCR and compareRC 2008-04-29 17:16:53 -06:00
Joel Dice
59f92b6208 support 64-bit multiplies on 32-bit systems 2008-04-29 16:11:17 -06:00
Joel Dice
4c2d44099b support more 64-bit operations on 32-bit systems 2008-04-29 14:24:52 -06:00
Joel Dice
4652b7aea0 enable 64-bit various operations on 32-bit systems 2008-04-29 10:56:29 -06:00
Joel Dice
7791b1df80 support 64-bit operands on 32-bit systems in compareCR 2008-04-29 08:57:24 -06:00
Joel Dice
a07a189ddb fix various register marshalling bugs 2008-04-28 18:58:02 -06:00
Joel Dice
8738bddcb9 bugfixes, mainly concerning 32-bit machines 2008-04-28 16:08:31 -06:00
Joel Dice
90ae9a70ee fix encoding reg-to-reg moves of one and two byte sizes 2008-04-28 10:52:54 -06:00
Joel Dice
1b5f14d847 re-enable tests in Misc and get them working 2008-04-28 09:53:48 -06:00
Joel Dice
5e45475f36 fix unused parameter warnings 2008-04-27 16:43:15 -06:00
Joel Dice
505e0bd7db treat 4-byte reg-to-reg moves as 8-byte moves on amd64 since the intention is to copy integer values verbatim; all tests now pass on amd64 2008-04-27 16:25:17 -06:00
Joel Dice
cc64668657 add support for more instructions to assembler 2008-04-27 14:42:57 -06:00
Joel Dice
5b7372a3bb various bugfixes; majority of tests now pass 2008-04-27 14:15:18 -06:00
Joel Dice
d5137a7cdf use stack instead of registers to save data across jumps and branches; bugfixes 2008-04-26 14:56:03 -06:00
Joel Dice
571bffde09 fix some issues with 64-bit moves on 32-bit machines 2008-04-20 20:50:46 -06:00
Joel Dice
a259beccdc implement xorRR, remove unused Assembler::stackSyncRegister 2008-04-20 16:19:11 -06:00
Joel Dice
9976c1132c fix instruction callR 2008-04-20 14:43:28 -06:00
Joel Dice
d6c3b2327f bugfixes; enums test now succeeds 2008-04-20 13:35:36 -06:00
Joel Dice
ddada5551d fix argument order bug in moveZRR 2008-04-19 20:04:15 -06:00
Joel Dice
8baa2bbd87 insert stack sync events before each instruction with more than one predecessor 2008-04-19 18:43:12 -06:00
Joel Dice
ab7314e526 more bugfixes 2008-04-18 18:19:45 -06:00
Joel Dice
a7134a2cd7 fix build 2008-04-17 16:07:32 -06:00
Joel Dice
525f733171 Merge branch 'master' into compiler
Conflicts:

	src/compile.cpp
	src/compiler.cpp
	src/compiler.h
2008-04-13 13:48:20 -06:00
Joel Dice
a51c4cef39 bugfixes 2008-03-16 13:38:43 -06:00
Joel Dice
684b402e82 bugfixes and new instructions 2008-03-15 17:54:20 -06:00
Joel Dice
420a054fd8 support 1- and 2-byte moves to memory 2008-03-15 15:02:19 -06:00
Joel Dice
6bf0ca5bd9 various bugfixes and new instructions 2008-03-15 14:24:04 -06:00
Joel Dice
6a9fbc0c17 allow assembler to acquire and release temporary registers; new machine instruction implementations; bugfixes 2008-03-13 17:43:11 -06:00
Joel Dice
406f173982 handle constant array lengths and indexes properly; various bugfixes 2008-03-13 14:50:56 -06:00
Joel Dice
9e2e614a15 various fixes to get invokevirtual working 2008-03-10 16:37:21 -06:00
Joel Dice
888836f8cd use push and pop for stack operations instead of mov 2008-03-09 15:27:51 -06:00
Joel Dice
2f1bdfeb27 remove x86.cpp 2008-02-19 19:10:18 -07:00
Joel Dice
2edaa82801 prepend copyright notice and license to all source files; add license.txt and readme.txt 2008-02-19 11:06:52 -07:00
Joel Dice
e8ed2a4749 various bugfixes in new compiler 2008-02-17 15:29:04 -07:00
Joel Dice
d654c943f3 various bugfixes and tweaks in new compiler, primarily related to duplicating stack operands 2008-02-17 13:57:40 -07:00
Joel Dice
6271f878e8 include function prologue and epilogue when compiling 2008-02-12 08:21:51 -07:00
Joel Dice
fa513beb2f rework compiler interface to explicitly accept a size parameter for each operation where relevant 2008-02-11 19:06:12 -07:00
Joel Dice
b9fa7179d9 more work on new compiler; addition now works 2008-02-11 17:20:32 -07:00
Joel Dice
5b2f351f01 adapt compile.cpp to new compiler 2008-02-11 10:21:41 -07:00
Joel Dice
713ff23881 clean up sketch of new compiler 2008-02-09 13:11:37 -07:00
Joel Dice
dc04c63491 more work on new compiler 2008-02-08 16:18:57 -07:00