Torsten Ruger
35b10c46a3
adds the risc instructions to the compiler
...
since they are not in the method anymore
2018-07-01 11:59:52 +03:00
Torsten Ruger
1505df894a
remove translation
...
from machine, which is quickly becoming a linker
2018-07-01 11:58:06 +03:00
Torsten Ruger
05669065ca
back to method_compiler
...
it is what it is
2018-06-30 23:26:28 +03:00
Torsten Ruger
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
Torsten Ruger
daf1b56062
start on class compiler
...
idea is to get cleaner layer seperation
reduce machine and rework builtin boot
2018-06-30 19:20:17 +03:00
Torsten Ruger
46d8f5002f
hoist parfait boot out of the machine boot
2018-06-30 00:39:23 +03:00
Torsten Ruger
8d7a2fe4d6
fix mom tests
...
and always have a list inside a class
2018-06-29 23:29:10 +03:00
Torsten Ruger
5b87133df2
split rubyx tests
...
in vool and mom level
2018-06-29 23:04:50 +03:00
Torsten Ruger
7006c8e3aa
fix remaining tests
...
rename ripples
2018-06-29 22:56:49 +03:00
Torsten Ruger
c8451d0048
create rubyx dir and move previous vool_compiler there
2018-06-29 22:46:39 +03:00
Torsten Ruger
7377522417
fix test ripples and minor parfait naming
...
Parfait ruby and boot names desynced, fixed that
2018-06-29 21:03:06 +03:00
Torsten Ruger
5036dd68df
remove to_mom from ruby_to_vool
...
must have slipped in
affects mosty tests
2018-06-29 14:57:48 +03:00
Torsten Ruger
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
Torsten Ruger
e6f01748ff
move adapter stuff around
2018-06-29 14:26:25 +03:00
Torsten Ruger
86b1edb40c
add seperate builders
...
remove if with polymorphism for different builders
(easier to understand by naming)
2018-06-29 13:27:57 +03:00
Torsten Ruger
d50893bb0f
rename risc_value to register_value
...
almost to register, but it still carries that value
2018-06-29 11:39:07 +03:00
Torsten Ruger
606c7bf906
remove booted flag
...
just boot if needed
2018-06-29 11:36:14 +03:00
Torsten Ruger
f0ba863721
remove to_mom / create_objects dichotomy
...
wsa supposed to be clearer, but even to me seems confusing now.
2018-06-26 20:46:58 +03:00
Torsten Ruger
563ed4647a
extract the ruby from mains tests
...
move up in directory
in preparation for arm tests
2018-06-24 11:56:10 +03:00
Torsten Ruger
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
Torsten Ruger
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
Torsten Ruger
046617f8dc
add branch listener functionaliy
...
have to store the branches and loop again as labels
dont neccessarily have positions yet
2018-06-17 22:25:38 +03:00
Torsten Ruger
3298651238
split create_binary into two phases
...
Which gives instructions a chance to check everything
and in Arms case check the constant loads/ instruction adding
So that during assembly no more change happens (and we don't have to reassemble)
2018-06-17 13:53:17 +03:00
Torsten Ruger
7543236f4f
objects didn't get positions
...
positions.empty? was wrong check
2018-06-16 10:58:54 +03:00
Torsten Ruger
698c845297
seperate position create and register
...
many test fixes
2018-06-15 22:00:49 +03:00
Torsten Ruger
9c93b38b8f
crete positions while collecting objects
...
clear two phase lifecycle for positions
always created invalid and set later
new does not auto add to cache
but create and get_or_create do
2018-06-15 21:54:21 +03:00
Torsten Ruger
2c765c8f14
rename the objects accessor
...
and move to object keys, not object_id
2018-06-15 09:18:39 +03:00
Torsten Ruger
3cc9175efa
start BranchListener
...
but on hold, since it needs positions before we have them
Must create them during collection phase
2018-06-14 21:29:34 +03:00
Torsten Ruger
eaaf61c117
fix position test
2018-06-14 21:19:22 +03:00
Torsten Ruger
5ec235d049
fixes outstanding misc, All green
...
Well. it's been a while, positioning is fixed (again)
apart from the upcoming BranchListener
2018-06-10 13:19:55 +03:00
Torsten Ruger
e1683938ed
fix label positioning bug
...
where a label at the end of a binary code resulted in the
label actually taking up a position, instead of sharing it with it's next
2018-06-10 13:18:56 +03:00
Torsten Ruger
0513cd504f
update return address in label
...
so return jumps go to the right address
2018-06-10 09:15:57 +03:00
Torsten Ruger
c7ad1d98ca
introduce the LabeListener to move instructions along when first code position changes
2018-06-09 22:13:43 +03:00
Torsten Ruger
ec1d38f5a6
reimplement instruction listeners with indexes
...
easier to understand, as indexes map to Binarycode indexes, and can thus later be used to assemble directoy into the code
Almost no change in tests (now only multiples of 4 addresses allowed)
2018-06-09 17:41:39 +03:00
Torsten Ruger
cf94227b2c
fix code init bug
...
where initial pos wasnt propagated
2018-06-09 09:16:23 +03:00
Torsten Ruger
ad3040a846
add position_chaning to event interface
...
by reacting to the change _before it happens, we can move any BinaryCode out of the way
So when Instruction are inserted and code gets inserted, we don't need to set up the correct listener explicitly (which is tricky across mathods and changing chains), but instead just move anything that is in the way along
2018-06-09 08:10:41 +03:00
Torsten Ruger
74c15d45a3
some more mocking worked
...
some didnt
2018-06-08 20:43:36 +03:00
Torsten Ruger
5815d32bde
make the instructions jump over the BinaryCode end
2018-06-07 19:27:44 +03:00
Torsten Ruger
2d218bbc48
work on jump insertion continues
...
Now registering CodeListener instead of PositionListener
Also instead of on the previous, in itself, which is simpler
and allows to react to insertion at end
2018-06-07 19:26:02 +03:00
Torsten Ruger
7fa8397b56
insertion pushes, split position tests
2018-06-06 10:19:18 +03:00
Torsten Ruger
c22aff4c4f
start on insertion events and handling
2018-06-06 10:00:07 +03:00
Torsten Ruger
4789b63fcb
fix the gapping of instructions
...
so last binary stays empty and new starts at 8
2018-06-06 01:16:00 +03:00
Torsten Ruger
4ab6d62acf
small arm fixes etc
2018-06-06 00:53:41 +03:00
Torsten Ruger
d7b3368b28
fix some pesty errors
...
need to fix instruction overlap beofre interpreter starts again
2018-06-05 19:05:12 +03:00
Torsten Ruger
8d953a619f
propagate instruction positions
...
still overlapping onto binaries, but a start
2018-06-05 18:11:25 +03:00
Torsten Ruger
f35ee6425a
renaming and test fixing
2018-06-02 23:48:12 +03:00
Torsten Ruger
1d1c7105b4
introduce some helper methods
2018-06-02 23:02:59 +03:00
Torsten Ruger
c2d450f779
fold position module and object position
...
simpler that way, aslo code is moving to listners
2018-06-02 21:59:41 +03:00
Torsten Ruger
24f6e30b54
start on redoing instruction positions
...
using insruction listeners (wip)
2018-06-02 21:20:15 +03:00
Torsten Ruger
3bc35c2275
rework binary code positioning setup
...
dependency chain set up explicitly.
Next have to react to events correctly
2018-06-02 17:29:38 +03:00