Jef
010f2d8569
Fix comparisons, add more tests for binops
2019-01-08 09:45:39 +01:00
Jef
fcd18746a7
Add 64-bit operations
2019-01-07 19:17:29 +01:00
Jef
5eee15ab02
Remove outdated comment
2018-12-19 20:27:16 +00:00
Jef
522818e7d8
Fix compiler bomb
2018-12-19 17:52:26 +00:00
Jef
9decdca525
Add Return
2018-12-19 16:39:20 +00:00
Jef
f91b9072de
Fix some issues with the use of stack depth
2018-12-19 14:42:00 +01:00
Jef
3b5c11a92a
Test comparison operators
2018-12-19 12:58:08 +01:00
Jef
2173f4bcca
Add other comparison operators, fix materialising locals, add more TODO comments (v. important)
2018-12-19 12:42:35 +01:00
Jef
cbf34a455b
Add factorial tests from spec (after fixing them slightly)
2018-12-19 10:40:31 +01:00
Jef
72855e48c7
Improve behaviour when adding literal to non-literal, materialise local if its value will be changed
...
Currently the implementation of materializing locals causes compilation to be non-linear in degenerate cases
2018-12-18 19:15:29 +01:00
Jef
5418241dc6
Allow blocks to return values in any register
2018-12-18 17:16:38 +01:00
Jef
74ffb8560c
Fix use of locals
2018-12-18 12:12:17 +01:00
Jef
23b5a56a7d
Fix locals not being restored properly (which may cause us to read garbage values from the stack)
2018-12-17 12:16:40 +01:00
Jef
bd2ee53c89
Optimize pop_i32_into, check more fib values
2018-12-15 16:39:38 +01:00
Jef
1e04dc90b6
Make more tests quickcheck-compatible, remove unused code
2018-12-14 16:35:48 +01:00
Jef
b832832c76
Add const folding, fix returning values from blocks
2018-12-14 16:20:28 +01:00
Jef
17ecd049a1
Register allocation V2
...
This lays the groundwork for other on-the-fly optimisations,
like passing literals through in order to do const folding
in linear time, while compiling.
2018-12-14 14:16:43 +01:00
Jef
4994e3671c
Remove unused argument from fibonacci example
2018-12-13 12:26:49 +01:00
Jef
5bb7430976
Add quickcheck, implement simple binary operations
2018-12-13 10:25:37 +01:00
Jef
5b448ce3c7
Stop leaking stack space on function call
2018-12-13 10:25:17 +01:00
Jef
189996accd
Fix receiving more than 6 arguments, allow calling functions with more than 6 arguments
2018-12-12 13:23:43 +01:00
Sergey Pepyakin
0cd70c649a
Implement returns.
2018-12-11 20:13:20 +01:00
Sergey Pepyakin
e02dbf1bc2
Add i32 literals support.
2018-12-11 20:12:55 +01:00
Sergey Pepyakin
0e9ba8332f
Pass arguments.
2018-12-11 19:46:41 +01:00
Sergey Pepyakin
078486e080
Basic form of a function call
2018-12-07 19:16:42 +01:00
Sergey Pepyakin
13c36612b5
increment → reserve.
2018-11-28 05:45:25 -08:00
Sergey Pepyakin
aa5643b9b5
Implement if then else
2018-11-28 05:45:25 -08:00
Sergey Pepyakin
ba216b2e8a
Add a simple i32.eq operator.
2018-11-28 05:45:25 -08:00
Sergey Pepyakin
b42696f207
Add a simple boilerplate.
2018-11-28 05:45:25 -08:00
Sergey Pepyakin
08240761d5
Compile a simple function ( #2 )
...
* Implement basics.
* Execute code
* Add wasm2wat test cases.
* abi_loc_for_arg for stack.
* Assert that sp_depth is 0 at the epilogue
* Do 32bit add.
* Assert that RAX can be used as a scratch register
* Reuse assembler.
* Align stack slots.
2018-11-08 13:56:27 -08:00
Dan Gohman
154b35ecc1
Initial experiment.
2018-10-29 12:02:01 -07:00