Commit Graph

2809 Commits

Author SHA1 Message Date
Torsten 22d513d895 fix div4 and tests
also bug in reduce_int, compiler not carried through
2020-03-22 14:31:43 +02:00
Torsten eed9ba082f Fix div10 and test
fix and use load_data (similar to load_constant)
and integrate into load_object when appropriate (ie for integers)
2020-03-22 14:31:43 +02:00
Torsten bd02f69824 reduce_int was overwriting register
No more. But the type question is open, ie what type does the resulting register have
2020-03-22 14:31:43 +02:00
Torsten 53eb28fff4 load constant to create register names with class
Just the id_ did give no clue to the contents, just took care of the uniqueness.
Better for debugging
2020-03-22 14:31:43 +02:00
Torsten 3ec5557ddb fix builder logic error
and tests
2020-03-22 14:31:43 +02:00
Torsten 1760b5b203 fix comparison test and helpers
moving to passing the instruction number, not the instruction
so in the error message we can say where the error is
(otherwise minitest is good enough to supress the trace of asserts calling asserts)
2020-03-22 14:31:43 +02:00
Torsten 3575aada17 tests for all macros
generated on master (know to work)
but with rXX registers, needs fixing
2020-03-22 14:31:43 +02:00
Torsten 9c5d17a3bb Fix div10 without method_missing
but reanimate infer_type to auto create the needed regsiters
also some helpers
2020-03-22 14:31:43 +02:00
Torsten 9a5e0f15cd reannimate infer_type
now with a _purpose_
2020-03-22 14:31:43 +02:00
Torsten 3688c967d3 Fix comparison macro
which leaves a definite need for instruction level testing
2020-03-22 14:31:43 +02:00
Torsten 2af953e1d2 last instruciton, dynamic_call
next macros
2020-03-22 14:31:43 +02:00
Torsten 7f5ebab800 did block yield 2020-03-22 14:31:43 +02:00
Torsten a4c0b8e5f9 did return sequence
surprisingly easy. also some check polish
2020-03-22 14:31:43 +02:00
Torsten fd43fc9e5c finally fixes the builder 2020-03-22 14:31:43 +02:00
Torsten db5a59f735 Unify instruction namings also dirs
Was getting confused myself, where it was instruction or instructions, when if the base class was inside or out of dir.
Now dirs are plural, and base class is inside.
2020-03-22 14:31:43 +02:00
Torsten f3d299208e fix message_setup with new builder 2020-03-22 14:31:43 +02:00
Torsten d0036ed95b better way to test object registers
also some cleaning, by using more helpers
2020-03-22 14:31:43 +02:00
Torsten ece1e8c87b fix some more of builder
but still not all. removed some and fixed the register allocation in allocate_int
2020-03-22 14:31:43 +02:00
Torsten ff49ff50c0 Convert SimpleCall to new regs
Also fix bug in RegsiterValue/Slot with chain, where logic was dodgy and compiler not set
2020-03-22 14:31:43 +02:00
Torsten 4b303977a7 Fix first Slot instruction that uses builder
now without method_missing and names
but still with instance_eval, hmm. Tried without, makes code much less readable
2020-03-22 14:31:43 +02:00
Torsten 4888b3b6db Starting to rework slot instructions that create risc
have to go through all and all macros and all thems tests. What did the wise man say: one step at a time
2020-03-22 14:31:43 +02:00
Torsten 4643be0ae6 codong RegisterSlot with reg and slot 2020-03-22 14:31:43 +02:00
Torsten 64d860b2bf create a load on the compiler
thus removing the need for << with objects on RegisterValue
2020-03-22 14:31:43 +02:00
Torsten 95f3eec043 repurpose RValue as RegisterSlot
with the idea of the better name came also the one about not needing the builder anymore
2020-03-22 14:31:43 +02:00
Torsten 088017bc05 SA for Slotted derivations
Object and Constant similarity are coming more into focus. Will unite after the merge
2020-03-22 14:31:43 +02:00
Torsten d22da1ab97 SA for slot_to_reg 2020-03-22 14:31:43 +02:00
Torsten 77003eed06 remove use_reg on compiler and SA for load 2020-03-22 14:31:43 +02:00
Torsten 0ce14bdfd1 moving to SA register names (wip)
starting to implement register allocation by first creating SA
Single Assignment means a register is only every assigned a value once. Hence for any operation involving another register, a new register is created.
We do this with a naming scheme for the registers in dot notation (as it would be in c) which means 2 registers with the same name, should have the same contents. This does not apply to temporaries, but that is another day.
Starting WIP now, and will create many red commits before merging when green.
2020-03-22 14:31:43 +02:00
Torsten f2c853821c First version of BeginnersGuide and other doc changes 2020-03-21 19:02:02 +02:00
Torsten a40d8f2e8c update ffi for 2.7 2020-03-21 12:41:56 +02:00
Torsten 887d7b9bbb replace fake compiler with real
less room for error
2020-02-28 12:54:17 +02:00
Torsten 393f0d9a60 fix argument transfer (to be logical) 2020-02-27 18:19:27 +02:00
Torsten 685022a6e0 Externalise register allocation into own class
On the way to the register allocation
2020-02-27 11:57:18 +02:00
Torsten fa144784fa cleaning 2020-02-26 19:31:41 +02:00
Torsten 8832df3221 Add number of registers to platform 2020-02-26 19:01:01 +02:00
Torsten Rüger 8df2e4bf08 SlotLanguage reborn in the Machine
Just added the compiler, that can parse Slot directly into SlotMachine code (no language layer in between)
Still unclear wheather the Maker is a thing, but since it was in the Language layer i did not remove it (yet)
Otherwise just the compiler and all the tests, moved from the slot_language.
2020-02-19 02:19:14 +07:00
Torsten Rüger d751c53d1d Add a SameCheck and rename the label
SameCheck is very similar to NotSameCheck, but only used from the language
Label was named jump, fixed that
2020-02-19 02:16:44 +07:00
Torsten Rüger b88c5ff498 Removing the SlotLanguage
I turned out that that layer did not provide benefit. Data was being shuffled, without gain, so i moved the compiler to the SlotMachine
2020-02-19 02:14:34 +07:00
Torsten Rüger 2d11078a37 Slotted constructor cleanup 2020-02-17 14:45:54 +07:00
Torsten Rüger c1679bd6ff Makes slots linked list
slots used to ba an array of symbols
Now we have an object for each slot, that holds the name and the next_slot
relatively easy change, though quite broad
2020-02-17 14:29:45 +07:00
Torsten Rüger 93103d551f Fixes for all test of next commit 2020-02-17 14:27:42 +07:00
Torsten Rüger 21817b182e Start to make slots recursive 2020-02-17 14:26:50 +07:00
Torsten Rüger b7df6f66f9 rename the XX_slot classes to SlottedXX
move to slotted and slots (wip)
2020-02-15 21:05:04 +07:00
Torsten Rüger 8b29326957 moving know_object out of the base class
object is only common to constant and object slots (which should be unified)
On the way to making the array recursive
2020-02-15 15:32:22 +07:00
Torsten Rüger 6aa6b32c50 move slot out of instruction dir
since it is not an instruction, just a helper
also doing this before rewriting slot recursively
2020-02-15 14:52:44 +07:00
Torsten Rüger 24ceb20281 cleaned up chained assignment and conditional
Making this almost usable
2020-02-13 19:45:47 +07:00
Torsten Rüger a153fde3f0 Fix variables to chain recursively 2020-02-13 19:09:00 +07:00
Torsten Rüger 6194148fc5 Rename SlotMaker to Variable
Feels like now with better names, i can start to work.
2020-02-13 13:10:04 +07:00
Torsten Rüger c194d373fb rename LoadMaker to Assignment 2020-02-13 13:02:23 +07:00
Torsten Rüger 99d2868400 Rename check_maker to equal_goto
will have different classes for different checks, started that
2020-02-13 12:53:41 +07:00