Torsten Ruger
3774f8a5a2
use translator and remove passes
...
the only passes that were left were reg -> arm
those are almost completely one to one, so the idea of passes didn’t fit
2015-10-24 17:11:18 +03:00
Torsten Ruger
a871f96630
remove passes and achieve the same by translating
2015-10-24 11:42:36 +03:00
Torsten Ruger
f4f703975b
removed arm and use as gem
2015-07-18 14:12:20 +03:00
Torsten Ruger
e1c19dee80
remove old to_asm
...
very strange that is was called in 1.9 but not 2.0
2.0 seems to delay interpolating strings
2015-07-18 12:15:07 +03:00
Torsten Ruger
f5136b6b68
minor formatting
2015-07-18 11:52:30 +03:00
Torsten Ruger
50da6a40f2
Move the Main instruction from register to virtual
...
also needs a branch in register.
This way the register level is self sufficient
(noticed while writing debugger)
2015-07-17 13:21:57 +03:00
Torsten Ruger
b670e058a9
fixes to get opal to work
...
opal has bug with << and |=, but changing syntax works
2015-07-12 10:01:45 +03:00
Torsten Ruger
b61c73acdd
renamed info to MethodSource
2015-07-03 20:13:03 +03:00
Torsten Ruger
e959c5b0f5
fixed wrong exit code
...
no wonder it was set faulting, duh
2015-07-02 13:50:13 +03:00
Torsten Ruger
3195d800e9
fix putstring file descriptor
2015-07-02 09:49:52 +03:00
Torsten Ruger
1b791dc0d0
putstring was missing the steam id
2015-07-01 21:42:59 +03:00
Torsten Ruger
047c77e186
fixed that darn method address bug
2015-07-01 09:47:10 +03:00
Torsten Ruger
9541712af8
fixing all the indexes
...
with the type word and layout
but the list starting at 1, indexes still need 1 added
and for arm x 4.
Tried to get all that into one function, resolve_index
2015-06-30 18:38:56 +03:00
Torsten Ruger
88f45cbf15
weird 4 to add for call works
2015-06-30 18:36:57 +03:00
Torsten Ruger
553f30c874
more ripples from removing index constants
2015-06-29 20:58:06 +03:00
Torsten Ruger
31635d9747
fixing index issues
2015-06-28 22:01:13 +03:00
Torsten Ruger
99b59d920c
constant fixes
2015-06-28 10:52:02 +03:00
Torsten Ruger
a00a49ecdb
fix frame indexes
2015-06-28 10:50:47 +03:00
Torsten Ruger
ef42abe611
unifying register comstants
...
were in several files with different names
many files touched, but just renames
2015-06-27 21:16:46 +03:00
Torsten Ruger
97b4c469f8
fixing register order in some instructions
...
and their use
Arm is confusing as it has result as first arg
we use forward logic, i.e. from -> to
2015-06-27 20:09:21 +03:00
Torsten Ruger
294ea8de4f
fix the move, correct for funny pipeline
2015-06-27 20:07:42 +03:00
Torsten Ruger
d0d857bbe0
fix object loading
...
by (ahem) copying the code from MoveInst.
2015-06-26 20:36:00 +03:00
Torsten Ruger
55b7ca83e1
fixing load constant
...
which needs to add to pc to get an object reference
2015-06-26 20:01:52 +03:00
Torsten Ruger
108cc8af45
minor cleanup
2015-06-26 20:00:50 +03:00
Torsten Ruger
37403f1139
fix misunderstood mov usage
...
When moving a reference (pointer) to a register
one needs to ADD to the pc
i.e. one needs an add, not mov instruction
2015-06-26 20:00:33 +03:00
Torsten Ruger
32e1903884
finished init routine
...
and better implemented sys calls
2015-06-25 16:31:09 +03:00
Torsten Ruger
cedc6e1b61
Fix parfait bug for word_length
2015-06-24 16:08:06 +03:00
Torsten Ruger
59188105ba
finish syscall
...
works, even had to fix parfait bug to see
2015-06-24 16:07:27 +03:00
Torsten Ruger
1a82ebcd69
mor on sys call implementation
2015-06-23 19:55:54 +03:00
Torsten Ruger
d8fa266b5d
fix method call addresses
...
was jumping to the method
but needs to jump to the code of the method
2015-06-10 11:10:46 +02:00
Torsten Ruger
6f111a5ae0
fix the initial jump
2015-06-10 10:43:50 +02:00
Torsten Ruger
1c29fcfd43
mem_length to word/byte length
...
be more specific, and don’t include padding
2015-06-05 09:20:43 +03:00
Torsten Ruger
5726d2c181
move machine to module level
...
makes for shorter, more concise, access
also remove one more bug possibility
(reinitiation)
2015-06-01 08:40:17 +03:00
Torsten Ruger
336e6c18de
register reference creation got more complicated
2015-06-01 08:34:17 +03:00
Torsten Ruger
e651b57d08
homing in on line length 100
2015-05-30 12:20:39 +03:00
Torsten Ruger
33d464f032
minor
2015-05-30 11:56:47 +03:00
Torsten Ruger
3e9e650764
fix arm tests
2015-05-29 12:47:49 +03:00
Torsten Ruger
a46b2d5c56
update to use parfait not virtual
...
more ripples
reverting to integers (not virtual::integer)
2015-05-29 12:33:40 +03:00
Torsten Ruger
2ccbea04b9
fixing assembly
...
position code changed and linking too
passes not working
2015-05-24 18:05:20 +03:00
Torsten Ruger
422ec64105
all green
...
That fixes all existing tests. Operation successful
Off course there is tests missing :-(
2015-05-20 17:29:08 +03:00
Torsten Ruger
b980def84e
move space to parfait
...
Also make the machine the singleton
and space hang off it
Many repercussions, not all fixed in this commit
2015-05-12 15:36:44 +03:00
Torsten Ruger
e4c799ecb6
first tests comping through after ast/compile change
2015-05-04 23:03:52 +03:00
Torsten Ruger
9ac165c34c
some checks
2014-10-07 12:23:27 +03:00
Torsten Ruger
b7164b354d
better solution for initial jump
2014-10-07 12:01:33 +03:00
Torsten Ruger
5c90ad83e0
add initial jump instruction
2014-10-06 19:57:44 +03:00
Torsten Ruger
486580aeb2
fix bad scoping bug
2014-10-05 01:12:44 +03:00
Torsten Ruger
d38097aea4
fixing pass order by require order (easier to track)
2014-10-05 01:12:16 +03:00
Torsten Ruger
3aca3cc33d
making good headway with register machine implementation in arm
2014-10-05 01:05:18 +03:00
Torsten Ruger
7968cadaf9
remove singleton in arm machine and use class methods
2014-10-04 17:34:51 +03:00
Torsten Ruger
c5655b1059
a long string of import order and namespace issues which is not over yet
2014-10-03 14:52:47 +03:00
Torsten Ruger
1347a85eb7
fixing import order
2014-10-03 14:33:06 +03:00
Torsten Ruger
a083c03b1d
move function call instruction to register level and the pass to arm
2014-10-03 14:32:54 +03:00
Torsten Ruger
38a286942e
move the hash access stuff to arm, not sure if needed at all
2014-10-03 11:05:17 +03:00
Torsten Ruger
220d9f6213
moving instrctions into own folders and arm machine out of the way
2014-10-03 10:25:10 +03:00
Torsten Ruger
ad73e320b0
moved unsued code out of the way
2014-10-02 22:34:58 +03:00
Torsten Ruger
277dddeb6a
time was up for the Bassembler
2014-10-02 22:33:09 +03:00
Torsten Ruger
1be71918a5
move all arm instructions to own folder and fold inheritance
2014-10-02 22:28:34 +03:00
Torsten Ruger
cc08016a0f
fix the logic of move, but really there is a deeper issue (we'd have to add to get pc relative addressing for constants)
2014-10-02 16:08:24 +03:00
Torsten Ruger
fba66371c0
(semi) proper fix for large moves, integers or virtual constants(was buggy)
2014-09-30 12:07:21 +03:00
Torsten Ruger
527e591e75
fix add instruction and test
2014-09-29 21:04:38 +03:00
Torsten Ruger
7d52e71f5c
found and implemented the movw, but not for pi :-(
2014-09-29 20:26:55 +03:00
Torsten Ruger
5a17bf3396
more headway on the (new) frame implementation
2014-09-27 14:59:16 +03:00
Torsten Ruger
4d07113429
add register reference where symbols are allowed
2014-09-25 20:28:40 +03:00
Torsten Ruger
457b40a7de
fix api and implement the big constant move
2014-09-18 17:05:59 +03:00
Torsten Ruger
49b6b99ab9
more work on large moves, including the notion of linking again
2014-09-17 17:00:19 +03:00
Torsten Ruger
e7f7f9c319
move fits_u8 to integer constant (from numberic)
2014-09-17 16:23:29 +03:00
Torsten Ruger
e4474e7e2c
rename length to mem_length and suffer the consequences
2014-09-17 12:04:54 +03:00
Torsten Ruger
cffa7f1953
small function naming adjustments
2014-09-16 17:16:13 +03:00
Torsten Ruger
db01529b67
eol warning
2014-09-16 17:15:17 +03:00
Torsten Ruger
45977ecc01
move assembly from visitor into objects, part one
2014-09-16 16:06:56 +03:00
Torsten Ruger
dd8e46fd1c
move length here
2014-09-16 16:05:08 +03:00
Torsten Ruger
56facae658
eol signal
2014-09-16 16:04:53 +03:00
Torsten Ruger
16b3cacc8d
work to move large constants
2014-09-16 11:39:08 +03:00
Torsten Ruger
7036a87678
fix the address for calls to jump past the method object header
2014-09-09 17:36:33 +03:00
Torsten Ruger
ccb5b37a3c
reinserted arm for now, until dependecy is cleaned up. fixed tests
2014-08-30 19:40:37 +03:00
Torsten Ruger
84d27ce9d9
remove arm as it is in own rep now
2014-06-30 15:28:39 +03:00
Torsten Ruger
98de7404ef
named syscall register
2014-06-24 12:40:49 +03:00
Torsten Ruger
17904d8e02
rename blocks do_add to be the same as sunctions add_code to blur the difference
2014-06-24 12:36:32 +03:00
Torsten Ruger
87fa71277a
some inlining and renaming
2014-06-14 11:12:53 +03:00
Torsten Ruger
0dbaebf647
fix all tests and a little cleaning
2014-06-14 10:59:25 +03:00
Torsten Ruger
a7551ea8b6
still working on the method dispatch
2014-06-13 23:41:45 +03:00
Torsten Ruger
dcd691fe00
minor
2014-06-12 21:27:47 +03:00
Torsten Ruger
ea0572c836
fixed while compilation (block order) and fixed and improved fibo
2014-06-12 16:23:57 +03:00
Torsten Ruger
8da1bc4645
fix putint (too eager optimization broke it)
2014-06-12 13:47:06 +03:00
Torsten Ruger
506f98da5a
fixed foo and hello, next putint
2014-06-12 09:07:03 +03:00
Torsten Ruger
eef6744827
fixes the if test (regs again)
2014-06-12 08:34:46 +03:00
Torsten Ruger
b125a7c5c7
fix passes, add noop reduction, remove the wretched value operators
2014-06-11 21:36:22 +03:00
Torsten Ruger
7cca50cd3a
still recoving from previous block - function change. no more exceptions at least
2014-06-11 00:38:46 +03:00
Torsten Ruger
e9519d4f05
move the code insertion functionality up to function. makes more sense. block still carries code though
2014-06-10 23:57:56 +03:00
Torsten Ruger
7ca3207b3e
moved registers to machine, changed return to 0 (from 7) and erased all integer references to registers
2014-06-10 13:29:01 +03:00
Torsten Ruger
b66c4157d5
keep track of used and assigned registers for each block
2014-06-08 01:41:56 +03:00
Torsten Ruger
36f237c633
removed the (too) fancy dsl. Also introduce register indirection
2014-06-07 17:59:44 +03:00
Torsten Ruger
c59f22f11f
first oo program to compile. But no worries, there is still work left to be done
2014-06-05 18:17:00 +03:00
Torsten Ruger
e6e969b4e4
a spirited effort to make assembly repeatable
2014-06-05 10:46:42 +03:00
Torsten Ruger
41a02a7190
small step to making the assmebly process repeatable (is destructive at the moment)
2014-06-05 10:28:53 +03:00
Torsten Ruger
72d4adc7af
another step closer to a working oo system
2014-06-03 22:16:57 +03:00
Torsten Ruger
ca19f5cb16
move to syms for names
2014-06-03 20:47:06 +03:00
Torsten Ruger
88a26414eb
change the debug output to be more readable
2014-06-02 15:11:48 +03:00
Torsten Ruger
83d4ce55ca
fix the load memory instruction
2014-06-01 22:06:59 +03:00
Torsten Ruger
31a55b07ac
makes memory a three operand instruction, like add etc. But 3 regs are still undone
2014-06-01 21:20:44 +03:00
Torsten Ruger
08bbad0fdc
more on classes, have to work on asm next
2014-06-01 21:03:08 +03:00
Torsten Ruger
4186c9cafe
add <= operator for fibo
2014-05-28 20:10:16 +03:00
Torsten Ruger
5a5b016a7e
use crystal calling convention, documented in readme
2014-05-25 10:57:56 +03:00
Torsten Ruger
6ac92cac3a
working on registers, awip (a work in progress)
2014-05-25 08:43:07 +03:00
Torsten Ruger
1e326e00b9
fix tests after register allocation work
2014-05-24 16:52:54 +03:00
Torsten Ruger
61a60abd08
ridiculously easy to implement the if now
2014-05-24 10:41:57 +03:00
Torsten Ruger
86e73bf1ba
save and restore the right registers
2014-05-22 21:55:17 +03:00
Torsten Ruger
4f0b769e82
get conditions to work for while
2014-05-22 21:38:57 +03:00
Torsten Ruger
587fd56300
remove a layer of indirection
2014-05-21 21:15:23 +03:00
Torsten Ruger
46102e56ad
rename c to register machine
2014-05-21 19:43:46 +03:00
Torsten Ruger
2df2dcc528
function now returns locals, not free registers
2014-05-21 16:42:36 +03:00
Torsten Ruger
e1f889fd10
fix fibo with new syntax. certainly works for operators, but not everything
2014-05-21 12:47:40 +03:00
Torsten Ruger
fe1414f383
adds hand coded fibo, works
2014-05-19 17:32:41 +03:00
Torsten Ruger
285988f173
putint works, work on syntax goes on
2014-05-19 15:44:12 +03:00
Torsten Ruger
c56b7cdf09
minor
2014-05-19 11:28:37 +03:00
Torsten Ruger
76f1537174
fix some arguemnt names
2014-05-18 12:34:53 +03:00
Torsten Ruger
9fc8bfbb55
fixin up mov arguments
2014-05-18 12:30:49 +03:00
Torsten Ruger
2be96dccdc
fix logic instruction arguments
2014-05-18 12:18:57 +03:00
Torsten Ruger
6abd10f278
started naming instruction arguments properly, starting with compare
2014-05-18 11:11:26 +03:00
Torsten Ruger
f65ad813af
move first arg into derived intruction constructor
2014-05-18 10:27:35 +03:00
Torsten Ruger
a35bba39bc
merge logichelper into last class that uses it
2014-05-18 10:24:14 +03:00
Torsten Ruger
7b1b2c5d87
aliased add_code to <<, to give a bit of the stream feel
2014-05-18 10:15:43 +03:00
Torsten Ruger
53666e8b33
bit of evaling
2014-05-16 23:33:25 +03:00
Torsten Ruger
a08661955f
a bit of cleanup and the good news is, we can output a (small) number
2014-05-16 23:24:19 +03:00
Torsten Ruger
fee82643e5
strangely the coredumps stopped. sure didnt feel like they would
2014-05-16 23:08:45 +03:00
Torsten Ruger
7e2210f772
renaming update_status_flag to just update_status
2014-05-16 19:56:13 +03:00
Torsten Ruger
b3f7b66ceb
coding the weird udiv10 and utoa
2014-05-16 19:55:46 +03:00
Torsten Ruger
823c11a381
more work on instrucitons, mov this time
2014-05-16 17:31:01 +03:00
Torsten Ruger
4030f32ead
finally coded the logic Shifting (what a beast)
2014-05-16 12:55:51 +03:00
Torsten Ruger
87e0f297e3
rename extra to right in logic inst
2014-05-16 11:27:30 +03:00
Torsten Ruger
ccafb09224
rename first hash argument from right to left in logic inst
2014-05-16 10:54:56 +03:00
Torsten Ruger
ef17bbf9dd
rename left to first in instruction and started on logic instruction cleanup
2014-05-16 10:42:25 +03:00
Torsten Ruger
009c0895f4
change right syntax to 1.9 style, looks a little nicer
2014-05-15 21:35:45 +03:00
Torsten Ruger
a0f0d08e81
named the first intruction constructor argument
2014-05-15 19:41:51 +03:00
Torsten Ruger
b4c79d218f
work on Integer.to_s , not a simple task as it turns out
2014-05-15 16:54:23 +03:00
Torsten Ruger
3912e0cd31
fix register issues, some typos
2014-05-14 22:04:03 +03:00
Torsten Ruger
d8d536aa2c
while assembles, now for some nice assmbler reading
2014-05-14 12:54:23 +03:00
Torsten Ruger
a5b4f3d9ad
remove NumLiteral, replace with IntegerConstant
2014-05-14 12:08:06 +03:00
Torsten Ruger
d6b5d46165
while compiles. jo
2014-05-14 12:02:54 +03:00
Torsten Ruger
d50c38f5ad
add more functionality to get while to work (not there yet)
2014-05-14 11:33:23 +03:00
Torsten Ruger
2230a4f25e
clean up intruction instantiation and fix tests
2014-05-14 10:47:30 +03:00
Torsten Ruger
46ea1df51e
rename function_call to call_site in all levels to avoid confusion
2014-05-13 21:15:02 +03:00
Torsten Ruger
04af367bc0
coming together, more and more each day
2014-05-13 21:06:12 +03:00
Torsten Ruger
f6711ea49c
checkpointing on the mad road to register allocation
2014-05-13 18:21:24 +03:00
Torsten Ruger
b0302948dd
rename machine to c_machine
2014-05-13 17:06:42 +03:00
Torsten Ruger
d7f31e7f39
introduce constant class and add block to compile signature(wip, work in progress)
2014-05-13 16:24:19 +03:00
Torsten Ruger
e600911fe8
adds variable, something compliles , but...
2014-05-10 17:55:02 +03:00
Torsten Ruger
5b002c0ff6
little more attribute filing
2014-05-10 16:08:53 +03:00
Torsten Ruger
9e5b60dfab
moving many attributes into the attributes hash, but not nearly all
2014-05-10 15:59:46 +03:00
Torsten Ruger
8faf0ba17f
phase 1- get rid of the pesty args in structions
2014-05-10 15:47:27 +03:00