Commit Graph

58 Commits

Author SHA1 Message Date
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
5b92b6b785 get plus (+) working
alas, new integer is not created yet
2018-03-31 19:37:24 +03:00
a2173645b3 remove the :int shorthand 2018-03-31 19:17:55 +03:00
6e941ebcb7 introduce load_data instruction
which just loads data to a register (used internally)
as opposed to integers, which are objects
2018-03-31 12:38:30 +03:00
e68b28d66d fix helper
and start on arg test
2018-03-30 18:05:38 +03:00
1956f18faa add an integer plus
not correctly handling integer objects yet
2018-03-30 17:09:02 +03:00
eb7713a9f3 remove method_compiler init method
as init is really just adding a label it is done in the method
 (thus mixing the levels, “polluting” parfait with risc, but there must
be change coming that way anyway)
2018-03-25 19:37:51 +03:00
793fa313a5 change operators to symbols 2018-03-24 17:53:27 +02:00
3ceb2c2f69 fix div10 return sequence
did not return at all before
2018-03-24 16:51:26 +02:00
267237b776 fix init method message setup
was causing errors in interpreter
(that may have gone unnoticed in arm, as the interpreter checks stuff)
2018-03-24 15:59:54 +02:00