Commit Graph

67 Commits

Author SHA1 Message Date
05669065ca back to method_compiler
it is what it is
2018-06-30 23:26:28 +03:00
91a99b1239 let boot_functions return the compilers
methods are still added, but this is a good step to removing the risc/cpu level from the methods
2018-06-30 23:16:17 +03:00
208b98d709 start to move translate code 2018-06-30 22:53:32 +03:00
6bd01fd55f rename method_compiler
in line with other compiler XX_Compiler being the compiler for that layer
remove type from compiler as it is in method available
2018-06-29 14:48:52 +03:00
86b1edb40c add seperate builders
remove if with polymorphism for different builders
(easier to understand by naming)
2018-06-29 13:27:57 +03:00
3dffebed3f rename a bit 2018-06-29 13:03:19 +03:00
d50893bb0f rename risc_value to register_value
almost to register, but it still carries that value
2018-06-29 11:39:07 +03:00
f1b09ac58d move builtin boot to builtin module 2018-06-29 11:23:26 +03:00
ce79617875 fix the exit sequence
was returning wrong register (1, not 0)
also saving the message for test, which changes order as the return value destroys the message
2018-06-19 19:52:06 +03:00
5f7683efcf pass return integer back out through exit
for testing of binaries later (and off course general correctness)
Some tests were using the fact that the interpreter was used, changed those to return ints rather than strings
2018-06-19 18:55:47 +03:00
a350325b6b fix function call and simple call logic
Before creating DynamicJump, the FunctionCall got a register for a
possible jump address. Now that is handled by DynamicJump and
FunctionCall just needs the method, from which it determines the
binaryCode address
2018-05-19 12:21:20 +03:00
e237bc625a remove unused methods
and a whole lot more index fixes
2018-05-14 20:50:52 +03:00
3c00239f36 another million index fixes 2018-05-14 15:17:04 +03:00
1c52ab6b67 use hex for labels
idea was to be able to compare to positions
(but they are different positions)
2018-05-01 19:20:16 +03:00
ec5a7f8a02 implement larger/smaller or equal 2018-04-24 19:45:58 +03:00
7a2160e9b4 fix comparison operator
< implemented <=
2018-04-23 19:39:16 +03:00
04359546b7 implement greater than 2018-04-19 22:57:31 +03:00
be3d125b82 implement smaller than comparison
which is NOT an operator in the risc sense
rather a minus and a check for sign
(which _could be more efficient in arm, with conditional execution)
2018-04-19 22:41:40 +03:00
9e21719aeb generalise the operator handling
ie passing them through
implementing more
2018-04-19 22:13:52 +03:00
3a50b7dd0e fix mod4 name
really did div4
2018-04-19 10:00:55 +03:00
8e1efa3993 fix source for exit label 2018-04-18 20:10:07 +03:00
059ff4a868 pass a source into the builder
for debugging
2018-04-18 19:12:30 +03:00
e5d014b936 bit more regs, bit more resets 2018-04-08 22:29:08 +03:00
8c322329fb fix builtin methods according to last commit 2018-04-08 18:52:17 +03:00
c30e461385 add operator to builder
just minus for now, easily extended
2018-04-08 01:01:24 +03:00
5d4b9d4834 add branches to builder 2018-04-08 00:50:51 +03:00
695ae5ad99 add label generation to builder 2018-04-08 00:39:35 +03:00
6958fc31ab rework resolve_method, using builder 2018-04-07 23:07:44 +03:00
26cf911a5c change build names a little and document 2018-04-07 22:35:40 +03:00
db55ec3fd6 slightly changing built return logic
very tempted to add immediately, but bigger change
2018-04-07 00:35:54 +03:00
dd0d162ebf fix the init also, was using first message twice
not advancing after first load
2018-04-07 00:14:02 +03:00
f09086e524 unite the two resolve_to_index functions 2018-04-05 20:10:00 +03:00
ec31bde33a fix use of messagesetup
which does setup for the method being called
not the one we’re in. duh
2018-04-05 12:23:43 +03:00
c304ad67c6 load space twice in init , messagesetup overwrites first
lots of interpreter test changes, brittle, must factor __initi out
2018-04-02 23:25:52 +03:00
576ae9261d recode resolve method as assembler
definitely needs some refactoring
in fact i was hoping to code this in ruby (with compiler tweeks)
but there it is: goes through the linked list of methods of the type
and compares their name with self (method on word)
if not found ends in sys exit for now
2018-04-02 19:32:59 +03:00
9fafbe4e96 remove Kernel class for clarification
since it was a class it was fake anyway
moved methods to object
2018-04-02 17:06:31 +03:00
87eee0b66e add object method missing as sys exit
functions get added twice and thus removed once
remove restriction for now
2018-04-02 16:49:30 +03:00
fb29fb6431 linked list of methods instead of list of methods
api changes slightly, especially for each, but mostly sama sama
2018-04-02 16:36:43 +03:00
9efeb58061 fix ret_to_byte
by the now familiar unwrapping of args and wrapping of return
2018-04-01 22:16:17 +03:00
1a19683e7d fix RegToByte
seems to work, but does not end in syscall
2018-04-01 21:59:06 +03:00
3a9539a071 adds multiplication
without overflow testing, like the others
2018-04-01 21:18:08 +03:00
1d57c59dab fix putstring
mainly returning an integer object rather than fixnum
2018-04-01 18:57:43 +03:00
b1376e83bd add integer minus
rework plus to make that easy
2018-04-01 15:26:53 +03:00
972cf47c8b adding returns to all builtins 2018-04-01 15:17:16 +03:00
def67205f0 fix mod4
which is just shift right by 2 after all
2018-04-01 15:13:12 +03:00
10fa61aa9f fix integer plus
mostly forgot the return sequence
2018-04-01 14:56:01 +03:00
8acfda457f fix div10
by reducing the incoming integer to fixnum
and then pushing the fixnum result into a new integer
2018-04-01 14:50:13 +03:00
5a861d4ed5 move some compiler helpers to the compiler itself 2018-04-01 14:09:30 +03:00
168c2e862f move wip tests 2018-04-01 14:01:17 +03:00
4725b81270 get those integers crated and used 2018-03-31 20:21:27 +03:00