Commit Graph

1524 Commits

Author SHA1 Message Date
Torsten Ruger
85eec2f3cb adding instance variables to class 2017-01-15 14:21:57 +02:00
Torsten Ruger
f9824079d6 splitting assignment into three, for args, locals and ivars
The decision on which is moving up to the ruby  compiler, so it can at
the same time emit the correct assignment form.
Just another example of moving away from a language and to an
intermediate form (that has no language equivalent)
2017-01-15 13:01:28 +02:00
Torsten Ruger
a0cf5bffc0 small rename to align has_locals and has_arguments
for semantic and code unification
2017-01-15 12:59:03 +02:00
Torsten Ruger
4095bb397f starting to create vm_method from ruby_method
issues galore though
2017-01-15 12:10:37 +02:00
Torsten Ruger
9eeb9f65f3 add normalizing and method compilation phases (empty) 2017-01-14 20:30:19 +02:00
Torsten Ruger
2e62c5bbb6 create compilers directory, found and renamed salama.rb 2017-01-14 20:05:58 +02:00
Torsten Ruger
01fe3b4b04 small rename 2017-01-14 19:52:16 +02:00
Torsten Ruger
bd78a2d555 renames Typed to Vm 2017-01-14 19:28:44 +02:00
Torsten Ruger
75c7ca950e bit more method collector/creation testing 2017-01-13 22:16:06 +02:00
Torsten Ruger
3f6c1bc3a3 manage to create ruby methods 2017-01-12 20:38:04 +02:00
Torsten Ruger
9d36d72ee5 load arg type directly into the object
Was going through the method, but the type is just as constant and
saves 2 instructions 4 every call
2017-01-04 21:34:51 +02:00
Torsten Ruger
78f7420ef7 add locals type into the call preable
calling already sets the argument type
so now we set the locals type too- symmetry
(lots of tests affected)
2017-01-04 21:33:43 +02:00
Torsten Ruger
f2c4e542ac rename to to array function to to_arr 2017-01-04 21:32:09 +02:00
Torsten Ruger
0383532cd4 the number keeps changing, but why 2017-01-03 22:56:00 +02:00
Torsten Ruger
1647b746ea starting to rename to rubyx 2017-01-02 00:29:20 +02:00
Torsten Ruger
0397d4064d fix all positioned uses as helper (not included anymore) 2017-01-01 21:52:55 +02:00
Torsten Ruger
cd474f66f6 stop including positioned 2017-01-01 21:52:35 +02:00
Torsten Ruger
fafcd15ce8 make positioned a helper module 2017-01-01 21:52:00 +02:00
Torsten Ruger
06cfbdf066 minor 2017-01-01 21:50:54 +02:00
Torsten Ruger
86dafccb04 stop including padding
use it as a helper module
2016-12-31 20:08:33 +02:00
Torsten Ruger
dccd097fef remove collecting from the machine
use as stand alone module
2016-12-31 19:54:18 +02:00
Torsten Ruger
671512b96c avoid fixnum overflow for hashes 2016-12-31 19:53:43 +02:00
Torsten Ruger
113b349af5 unlinking the objects collection from the machine
passing it around instead
2016-12-31 18:46:17 +02:00
Torsten Ruger
b094bcc64f rename unit and sint to human readable forms 2016-12-31 18:45:22 +02:00
Torsten Ruger
5f3744d6af remove unused attributes functions 2016-12-31 15:20:02 +02:00
Torsten Ruger
7bb1c361a5 small word test 2016-12-31 15:17:45 +02:00
Torsten Ruger
47c0f62212 error message 2016-12-31 15:10:07 +02:00
Torsten Ruger
a2ece04b6d a little more minimal elf tests 2016-12-31 15:08:32 +02:00
Torsten Ruger
fb414cecd6 use helper 2016-12-31 14:54:53 +02:00
Torsten Ruger
838aba470d move fix_types in order of usage 2016-12-31 14:54:34 +02:00
Torsten Ruger
853a531578 Move add_object to collector
more changes to come
2016-12-31 14:54:15 +02:00
Torsten Ruger
b9073d0c88 redid the type hashing
account for the class the type is for
by adding it to the hash code, so even the ivars are identical the
types are not
2016-12-31 14:51:06 +02:00
Torsten Ruger
0fa7f54bcc found and fixed hashing bug 2016-12-31 14:04:04 +02:00
Torsten Ruger
d6c503ecf4 inlined indexed into list
which was the only one using it.
A whole lot simpler, considering it will have to be bootstrapped someday
2016-12-30 21:00:18 +02:00
Torsten Ruger
7f06e00ccd making types private in space
turned out to be unnecessary, but still better
2016-12-30 20:47:28 +02:00
Torsten Ruger
ef66a87527 fixed silly dictionary bug
also finally duplicating keys and values and not handing them out
2016-12-30 20:46:18 +02:00
Torsten Ruger
a7935db107 cleaner way to generate argument types
possibly more correct
2016-12-30 19:17:59 +02:00
Torsten Ruger
83b6628f1a whitespace and code style 2016-12-30 19:17:15 +02:00
Torsten Ruger
db798d1a4a no default arg on init
also making sure the type is in the hash
but also that the order of type does not matter
2016-12-30 18:41:36 +02:00
Torsten Ruger
a82c9e8fb1 minor whitespace and renaming 2016-12-30 18:39:49 +02:00
Torsten Ruger
f0350601a7 Move the space instance to the parfait module
A better fit, maybe even a pattern for singletons
2016-12-30 14:10:49 +02:00
Torsten Ruger
a00f6be3ba remove the space instance from register machine
bad design, probably from the booting
2016-12-30 14:04:59 +02:00
Torsten Ruger
ef872edd7a rename instance_methods to just methods 2016-12-30 13:33:07 +02:00
Torsten Ruger
631038dfbd add another test (still failing) 2016-12-30 13:15:08 +02:00
Torsten Ruger
8aae8f7425 disabling failing test for now
have to add more test and code climate will show where
2016-12-29 21:24:11 +02:00
Torsten Ruger
4b5c590afe rework the boot process
Using a BootSpace mock to use more of the ruby new as before
Still some allocating and mucking about, but less
2016-12-29 18:53:24 +02:00
Torsten Ruger
e69d9a492e mostly moving to ruby instance variables 2016-12-29 18:51:24 +02:00
Torsten Ruger
25f44949e4 removing the fake memory form object
just in word and list now
2016-12-29 18:49:03 +02:00
Torsten Ruger
6214040888 changing to ruby instance variables
from the fake memory
2016-12-29 18:47:45 +02:00
Torsten Ruger
b5f04ec718 mostly renames from the type change
also making setters as explicit set_xx methods
2016-12-29 18:45:32 +02:00
Torsten Ruger
f4b3c645e5 rework type with separate arrays for names and types
Means no more indexed
also using ruby instances
small rename for names
2016-12-29 18:42:38 +02:00
Torsten Ruger
4c3007e6c0 removing meta class (for now) 2016-12-29 18:39:59 +02:00
Torsten Ruger
80237e5033 rename position accessor
for future
2016-12-28 21:40:06 +02:00
Torsten Ruger
c60949fe24 small refactor on arg loading 2016-12-28 21:10:14 +02:00
Torsten Ruger
e551732f18 tighter integration with factory methods for adding code
define methods to collapse the code Register.
in add_code Register.factory_method
most instructions done, except op and branch that are rare
2016-12-28 20:37:54 +02:00
Torsten Ruger
af31774074 implement assignment type check 2016-12-28 19:20:16 +02:00
Torsten Ruger
9cf56b3aa6 use factory functions consistently to create instructions 2016-12-28 19:01:58 +02:00
Torsten Ruger
4cf732d395 use transfer factory 2016-12-28 18:37:15 +02:00
Torsten Ruger
57c038f13b use load_constant factory method 2016-12-28 18:31:29 +02:00
Torsten Ruger
7d29a85187 remove legacy :int type 2016-12-28 18:25:14 +02:00
Torsten Ruger
a3585870b9 remove unused code 2016-12-28 18:17:52 +02:00
Torsten Ruger
4412eda105 small refactor and rename 2016-12-28 18:16:39 +02:00
Torsten Ruger
184f129107 dead comment removal 2016-12-28 18:10:33 +02:00
Torsten Ruger
25ae6e3d26 remove next_list from NamedList
Was legacy from the days of (linked) Frames
Now only messages are linked
2016-12-28 18:08:07 +02:00
Torsten Ruger
8867b13240 yep, opal != OPAL
engine has to be in small letters it seems
OPAL came from the original commit in 2013, but alas
2016-12-28 14:35:07 +02:00
Torsten Ruger
9226de4502 testing to_s 2016-12-28 14:11:05 +02:00
Torsten Ruger
266764be06 testing to_s on Code 2016-12-28 13:59:02 +02:00
Torsten Ruger
a8f3d5a634 had to fix the string hash for opal 2016-12-28 13:53:57 +02:00
Torsten Ruger
4940bc41a3 keep positions globally, not in the object
hopefully cleaner switch after bootstrapping
2016-12-28 12:51:18 +02:00
Torsten Ruger
903fc3e4cf much ripples from changing the calling convention
See previous commit
Now args and locals are arrays in the Message
2016-12-27 20:39:39 +02:00
Torsten Ruger
f1cfd3c379 change calling convention
Message carries arrays for arguments and locals
This means an extra load for any access
Also fix silly bug: using the wrong method (the one we’re in, not the
one we’re calling)
2016-12-27 20:37:53 +02:00
Torsten Ruger
3c3dedadd1 remove indexed_length from NamedList 2016-12-27 20:34:47 +02:00
Torsten Ruger
aaa94f0743 small fixes 2016-12-27 20:34:11 +02:00
Torsten Ruger
a5946cb644 same renames for bytes (set/get_byte) 2016-12-25 18:11:58 +02:00
Torsten Ruger
f648bf7bd5 rename also get_slot, to slot_to_reg
makes source and target clear
2016-12-25 18:05:39 +02:00
Torsten Ruger
35adf9a5e6 rename set_slot
set_slot was clear about the target, but not the source.
Better with reg_to_slot (and soon it’s inverse slot_to_reg)
2016-12-25 18:02:39 +02:00
Torsten Ruger
1b8d6149dd adding to_s to code for debugging 2016-12-23 21:31:31 +02:00
Torsten Ruger
6c9bd7e476 remove unused code
also just came through opal
2016-12-22 21:16:56 +02:00
Torsten Ruger
3b888b203d crude rework of the hashing to work in opal 2016-12-22 21:16:36 +02:00
Torsten Ruger
2adec3226c opal gods require explicit requires 2016-12-22 21:15:20 +02:00
Torsten Ruger
c3c52d36b8 seperate args from message (just like frame) 2016-12-21 22:35:36 +02:00
Torsten Ruger
ed12108425 rename locals from type to role in message 2016-12-21 19:01:42 +02:00
Torsten Ruger
0e99ff33ae use frame type rather than the indexed construct 2016-12-21 18:59:07 +02:00
Torsten Ruger
93ba5543b3 more renaming of frame 2016-12-21 18:51:22 +02:00
Torsten Ruger
0040baae28 rename frame to named_list to be shared soon 2016-12-21 18:45:18 +02:00
Torsten Ruger
b242f9e223 bringing the locals into the ruby method 2016-12-21 11:30:35 +02:00
Torsten Ruger
9ec9ccb9b6 start on collector for local variables 2016-12-21 11:20:36 +02:00
Torsten Ruger
8b05951883 extracting processor comonality before adding a third 2016-12-21 10:51:33 +02:00
Torsten Ruger
8507bef08b extracting methods for the compiler to handle 2016-12-20 20:02:52 +02:00
Torsten Ruger
a70d20d63e add a ruby method
including source ast and args, later locals
2016-12-20 20:02:20 +02:00
Torsten Ruger
9e89306733 rename to get guard matches 2016-12-20 20:01:28 +02:00
Torsten Ruger
aa6685a0cb test collector for ivar assignment 2016-12-20 15:46:23 +02:00
Torsten Ruger
aa5f48e3c6 remove instance_names from class again
and use types names instead. For now assuming Object class
2016-12-19 14:20:47 +02:00
Torsten Ruger
af9fed863f small rename 2016-12-19 14:16:10 +02:00
Torsten Ruger
107e3e6d58 pick up instance variables from the class
Crude first set to creating types
2016-12-18 20:05:11 +02:00
Torsten Ruger
e77298f4b1 Give the class a list of ivars
Which is redundant with the type’s names, so let’s see
2016-12-18 20:04:40 +02:00
Torsten Ruger
af9987659f create and test derived classes too 2016-12-18 17:17:58 +02:00
Torsten Ruger
170d453a36 start with melon and tests
First step, create a basic class
2016-12-18 17:02:55 +02:00
Torsten Ruger
756cb52a98 renames compiler to method_compiler 2016-12-18 14:15:19 +02:00
Torsten Ruger
272f99daf7 the cop struck again 2016-12-17 20:09:17 +02:00
Torsten Ruger
48af14f5c9 removes class statements
classes have to be created in melon, a level up
2016-12-17 18:31:26 +02:00
Torsten Ruger
ffb69a2c55 remove function statements
functions need to be defined a level up
2016-12-17 18:28:42 +02:00
Torsten Ruger
8845b91529 remove FieldDef
and on_field_def , :field_def and fixed all related tests
local variables will have to be determined outside the typed layer
2016-12-17 13:12:49 +02:00
Torsten Ruger
c12f11fba5 try both ree and cop 2016-12-17 09:44:21 +02:00
Torsten Ruger
782627ae79 small rename
to avoid confusion with type.create_method
2016-12-17 00:21:12 +02:00
Torsten Ruger
5c34835ae3 type converts method args if needed 2016-12-17 00:17:54 +02:00
Torsten Ruger
681b53cc4c make compiler default to compiling Space.main 2016-12-17 00:17:35 +02:00
Torsten Ruger
f8cefcde3c retiring ClassField and class_field from typed layer
Creating classes is the responsibility of melon
2016-12-16 19:05:49 +02:00
Torsten Ruger
dd6dede6ef refactor object file somewhat 2016-12-16 16:18:14 +02:00
Torsten Ruger
e10fc3eedd some reek assited coding on assembler 2016-12-16 15:41:26 +02:00
Torsten Ruger
5cd05f6135 refactor memory instruction (needs better tests) 2016-12-16 15:40:52 +02:00
Torsten Ruger
190a0ffa47 adds set_byte interpreter test 2016-12-16 01:43:54 +02:00
Torsten Ruger
b2579a2b82 dead code removal 2016-12-16 01:31:38 +02:00
Torsten Ruger
6f9955a726 more auto guard rules
and related renaming of files
2016-12-16 01:14:09 +02:00
Torsten Ruger
516bbd10b7 little fat of meta class
meta is firmly in the ruby world, not implemented in type world
2016-12-16 00:57:10 +02:00
Torsten Ruger
f7e01ff05e remove the value class
more of an idea, had no impact on implementation
2016-12-16 00:56:25 +02:00
Torsten Ruger
fd519314cb strip down compare instruction
not really used, using conditional branches instead.
(in arm any instruction can execute conditionally)
2016-12-16 00:41:37 +02:00
Torsten Ruger
ed0900df7f extracting to_s from getter and setter 2016-12-16 00:30:26 +02:00
Torsten Ruger
bc22c40101 Get Byte interpreter test 2016-12-15 22:15:58 +02:00
Torsten Ruger
886220d388 remove unused variable class 2016-12-15 19:43:53 +02:00
Torsten Ruger
dc56274940 refactor also building word
obviously created by copy/paste, more refactoring possible
2016-12-15 19:31:39 +02:00
Torsten Ruger
5ea6bfed27 refactor builtin object, some machine too 2016-12-15 19:20:54 +02:00
Torsten Ruger
94c423c2b3 whittling arm_translator 2016-12-15 18:21:08 +02:00
Torsten Ruger
e2c006b5ad minor 2016-12-15 18:08:55 +02:00
Torsten Ruger
884bf23e5f fix elf test 2016-12-15 17:57:45 +02:00
Torsten Ruger
1571c796bb remove unused from type 2016-12-15 14:00:34 +02:00
Torsten Ruger
2b3f9c398e add find method to indexed 2016-12-15 14:00:03 +02:00
Torsten Ruger
b93f207638 some common instruction extration 2016-12-15 12:38:22 +02:00
Torsten Ruger
fdefb8e7a5 more refactoring on compare 2016-12-15 12:38:03 +02:00
Torsten Ruger
ec2b0a563e bunch of method extraction on instructions 2016-12-14 21:53:26 +02:00
Torsten Ruger
55c108a8d7 refactor move_instruction a bit 2016-12-14 21:13:41 +02:00
Torsten Ruger
b3eeb7db21 memory instruction refactor (small) 2016-12-14 21:05:24 +02:00
Torsten Ruger
6eea3f2b2a refactor logic instruction 2016-12-14 20:31:37 +02:00
Torsten Ruger
c1d23a8d48 whitespace round plusses 2016-12-14 19:57:09 +02:00
Torsten Ruger
27e7a362db comment unused code 2016-12-14 19:52:08 +02:00
Torsten Ruger
56bf875f36 refactor call_instruction 2016-12-14 19:07:03 +02:00
Torsten Ruger
bf4ddd16ee remove dead code 2016-12-14 19:06:48 +02:00
Torsten Ruger
456e9b1ec0 folded salama-arm in 2016-12-14 13:43:13 +02:00
Torsten Ruger
9a0e2bcb11 typed methods now for type only 2016-12-14 13:24:42 +02:00
Torsten Ruger
b3a9d8b1bc register and boot consequences of typed method 2016-12-14 13:23:46 +02:00
Torsten Ruger
021fab31db small things 2016-12-14 13:22:47 +02:00
Torsten Ruger
bd875be023 move typed method's home to type
class should in the future have ruby_methods
2016-12-14 13:21:55 +02:00
Torsten Ruger
012b5d683c change method locals to type object too (same as args) 2016-12-13 19:18:17 +02:00
Torsten Ruger
16b3a77350 fixes from the method argument change
Affects
method creation
argument manipulation
compiler / to_code
2016-12-13 18:49:45 +02:00
Torsten Ruger
c346260bde change method arguments to be a type instance
where is was a list of variables (half baked)
variables also having values (not applicable)
2016-12-13 18:47:44 +02:00
Torsten Ruger
1c28926c6b improve type tests 2016-12-13 18:46:03 +02:00
Torsten Ruger
357490ff5f add little bit docs 2016-12-13 11:02:53 +02:00
Torsten Ruger
17023fdeb1 rename method to typed_method 2016-12-12 23:38:55 +02:00
Torsten Ruger
4ff684b6a4 even more refactoring for assembler 2016-12-11 16:48:01 +02:00
Torsten Ruger
fffe814205 more assembler refactor 2016-12-11 16:12:39 +02:00
Torsten Ruger
90a808b1c5 assebler refactor 2016-12-11 14:48:12 +02:00
Torsten Ruger
6bb23eac56 small interpreter refactor 2016-12-11 14:19:24 +02:00
Torsten Ruger
e479b00b29 introduce base class for get_slot and get_byte called getter 2016-12-11 14:12:35 +02:00
Torsten Ruger
ef285a146f add abstract base class for set_byte and set_slot called setter 2016-12-11 14:06:09 +02:00
Torsten Ruger
1dbd8c86e0 remove parslet dependency 2016-12-11 14:05:43 +02:00
Torsten Ruger
f3248462cc remove references to soml 2016-12-11 12:55:03 +02:00
Torsten Ruger
3715eb94ed uncomment unused code for now 2016-12-11 12:18:11 +02:00
Torsten Ruger
b6fdb51ed1 fix statement list compilation 2016-12-11 12:13:42 +02:00
Torsten Ruger
661911de0a comment unused fluff 2016-12-10 23:45:24 +02:00
Torsten Ruger
e82c86f6c1 fix class def tests and code 2016-12-10 22:41:49 +02:00
Torsten Ruger
6d4347c7ba finish assignment tests
and related code fixes
2016-12-10 18:48:18 +02:00
Torsten Ruger
f49b0c7356 fix assignment
tests paying off
2016-12-10 18:08:21 +02:00
Torsten Ruger
87693112d4 small fix 2016-12-10 18:07:38 +02:00
Torsten Ruger
4054b61752 fix more expression tests 2016-12-10 15:18:37 +02:00
Torsten Ruger
de5d87cde7 add basic compiler expression tests (back) 2016-12-10 04:01:47 +02:00
Torsten Ruger
5c2f545f8e tests for ast to code converter 2016-12-10 03:43:44 +02:00
Torsten Ruger
29fb2a50f5 refactor while statement 2016-12-09 14:29:06 +02:00
Torsten Ruger
da4a1af074 modulize return and list 2016-12-09 14:19:22 +02:00
Torsten Ruger
99132a92b6 modulize operator_expression 2016-12-09 14:17:01 +02:00
Torsten Ruger
037fd722df clean up function definition, now function statement 2016-12-09 14:12:41 +02:00
Torsten Ruger
059fb38f08 modulize field_access and field_def 2016-12-09 14:04:06 +02:00
Torsten Ruger
4da13c3867 move ast to tree, remove seperate helper file 2016-12-09 13:56:13 +02:00
Torsten Ruger
bab2fe32df modulize class_field and class_statement 2016-12-09 13:46:26 +02:00
Torsten Ruger
2b008dd3da modulize basic_value 2016-12-09 13:40:10 +02:00
Torsten Ruger
fa14e35a50 refactor if_statement 2016-12-09 13:38:07 +02:00
Torsten Ruger
1e7093c63f remodel assignment a bit 2016-12-09 13:20:48 +02:00
Torsten Ruger
395fd2d701 refoactor call site some 2016-12-09 12:22:37 +02:00
Torsten Ruger
224670e449 refactor name expression for compiler 2016-12-09 12:13:33 +02:00
Torsten Ruger
ca4bdcc528 gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
Torsten Ruger
e2236cf703 move soml ast here, now called type as the language is going 2016-12-08 19:38:50 +02:00
Torsten Ruger
da553f996f move compiler to typed
starting to get rid of soml, bit by bit
2016-12-08 15:25:20 +02:00
Torsten Ruger
c3a28d2abc small collector change 2016-12-08 15:19:37 +02:00
Torsten Ruger
a31f75fe93 basic immutability for type
add_instance_variable now uses global type list to check
adds hash and to_has functions
use backdoor (send) for booting
2016-12-08 12:50:25 +02:00
Torsten Ruger
137d3c9231 add each_with_index to indexed 2016-12-08 12:48:39 +02:00
Torsten Ruger
ad91c0a4bf add inspect method to dictionary 2016-12-08 12:48:08 +02:00
Torsten Ruger
2741f35380 add a each_pair to indexed and use in types 2016-12-07 23:35:51 +02:00
Torsten Ruger
266a04040b add types hash to space 2016-12-07 23:34:45 +02:00
Torsten Ruger
bcba3ed3b2 move parfait to new module 2016-12-06 16:50:54 +02:00
Torsten Ruger
3ed0c4829a log test 2016-12-06 16:44:04 +02:00
Torsten Ruger
adca8b21c1 move soml tests out, small cleanup 2016-12-06 15:08:29 +02:00
Torsten Ruger
5ac14ddccc update gems and fix tests 2016-12-06 12:08:18 +02:00
Torsten Ruger
4b05b48197 some docs 2016-12-06 11:38:09 +02:00
Torsten Ruger
229f5896c6 update to use new ast
soml was updated to have a typed ast layer to make programatic creation
easier
this brings LOTS of syntax change with it, that does not really mean
anything at all
All tests pass again so back to the same
2016-03-07 11:55:28 +02:00
Torsten Ruger
d7b210d63a update parser 2016-03-06 10:48:14 +02:00
Torsten Ruger
a8b815117f rename object_type to instance_type
for better distinction that it is not every object
but only instances of the class
2016-02-25 12:16:13 -08:00
Torsten Ruger
278d71b56c fix docs for rename 2016-02-25 12:03:11 -08:00
Torsten Ruger
d32b51c67b rename layout to type
this one goes to caleb for pointing it out.
Much better word
2016-02-25 11:50:10 -08:00
Torsten Ruger
3480b97eaa rename variable type to value_type
in preparation for next rename
2016-02-25 11:41:03 -08:00
Torsten Ruger
afe16868b5 more some tests 2015-11-30 16:10:08 +02:00
Torsten Ruger
dc560aaa5e move main to space 2015-11-30 16:09:12 +02:00
Torsten Ruger
d0b655d05f implement the div10 as assembler
easy after the some version worked
because it’s not arm it probably twice as long as need be
better (any?) optimisation would take care of that
still, nice to see it works
2015-11-21 14:20:25 +02:00
Torsten Ruger
ffc69fd2a5 add the hackers delight version of div10
better test too
remove remnants of 64bit multiplication
2015-11-21 14:19:07 +02:00
Torsten Ruger
91a0365c2e fix register shortcuts 2015-11-21 14:17:54 +02:00
Torsten Ruger
96972dab29 thats most of the benchmarking
strange about the puts in soml, hard to see where a factor of 10 would
come from
2015-11-20 23:51:58 +02:00
Torsten Ruger
da4003c30a ruby fibs versions and tests for them 2015-11-20 19:12:58 +02:00
Torsten Ruger
02d9a063b0 fix both parfait words to have same indexing 2015-11-20 13:25:49 +02:00
Torsten Ruger
aabde4b9a6 fix word indexes on arm
which affected offsets in the ruby side too
the hidden dead word needed accounting for
2015-11-19 16:40:00 +02:00
Torsten Ruger
a8453c126d use arm shift at runtime
arm indexes are in bytes (x4) at compile time
but at runtime we only have the array indexes, iw word indexes
arm has the nice barrel shifter to save us an extra instruction
2015-11-19 12:48:13 +02:00
Torsten Ruger
4871a52d37 better error reporting for parser 2015-11-19 10:10:13 +02:00
Torsten Ruger
249f43ad34 translate and interpret new instructions 2015-11-19 10:09:55 +02:00
Torsten Ruger
ac5a7ac4ca making parfait (both) use the new byte functions 2015-11-19 10:09:24 +02:00
Torsten Ruger
dffa3fbf42 adding word functions for byte access 2015-11-19 10:08:41 +02:00
Torsten Ruger
ff65952a3e add get/set byte instructions
it seems all cpus have them anyway so best use them
it was a pain to do this on word level, hard to write, hard to debug and
quite unnecessarily slow
2015-11-19 10:07:27 +02:00
Torsten Ruger
5369dc3d52 rename get/set internal
to _word , because _byte versions are coming
2015-11-18 15:36:43 +02:00
Torsten Ruger
979660f282 move parfait into register
register layer uses parfait models to generate object space
so parfait  should be part of register (not above it)
2015-11-18 12:04:25 +02:00
Torsten Ruger
2bc2d4486f move interpreter to register
seems more where it belongs, since it interprets the register machine
instructions
2015-11-18 12:00:30 +02:00
Torsten Ruger
40d81681b5 move parfait adapter into parfait ruby
in the future parfait will be coded in some and translated back into
ruby to “adapt”
until then, all ruby code is the adapter
2015-11-18 11:55:29 +02:00
Torsten Ruger
0643b96641 update arm
and small code changes from the fact that just loading a variable does
not change status flags
2015-11-17 02:28:47 +02:00
Torsten Ruger
303b7eb1f8 putstring unfolds length
which means sys call doesn’t need to
and also interpreter sometimes gets a symbol length
2015-11-16 18:03:29 +02:00
Torsten Ruger
f50d7b57a4 fix the putstring sys call indexing
index 0 is the marker word , so like in some, all indexes 1 based
works :-)
2015-11-15 22:03:06 +02:00
Torsten Ruger
8e82da0b61 fix arm (assembled) indexing
by having a dummy 0 index in salaam. when assembled
2015-11-15 20:42:07 +02:00
Torsten Ruger
9a2fe42167 change assembly order
first objects, then methods.
methods change length, so at least this way objects stay
did mean hacking the arm code (something for later)
2015-11-15 16:24:43 +02:00
Torsten Ruger
458610b970 implement string length 2015-11-15 11:28:16 +02:00
Torsten Ruger
1633bf1289 fix position check
as programs get bigger the distance gets bigger
needs better approach
2015-11-15 00:38:23 +02:00
Torsten Ruger
9602acf3d2 fix label positions 2015-11-15 00:36:15 +02:00
Torsten Ruger
cea60f202a small label changes 2015-11-15 00:35:43 +02:00
Torsten Ruger
b30cf21bbd fix arm indexes
needs rethought
fixed for static use, but what about dynamic
2015-11-15 00:35:12 +02:00
Torsten Ruger
cc9b515752 fix double label names 2015-11-14 22:53:01 +02:00
Torsten Ruger
278eccbed5 derive binary code form word
long ago hacked the binary code to use integers (thus forsaking correct
arm binaries)
Finally fix by deriving from Word which now has correct binary access
Dumped binary.name in the process, that is available from the method
2015-11-14 15:04:04 +02:00
Torsten Ruger
8fa92515b5 update arm and small arm fixes
constants in arm chunks, needs better solution
2015-11-14 13:05:49 +02:00
Torsten Ruger
dbcd39c277 helper do get the register no as int for arm 2015-11-14 00:22:23 +02:00
Torsten Ruger
6e7c6d814a long const avoidance
arm can only load 10 bits and some funny logic
so for now avoid big fffffff const
2015-11-14 00:21:24 +02:00
Torsten Ruger
6127d92ca9 implement arm branches
which backfired into interpreter as
plus actually means 0 or plus in arm
may still change back but for now
2015-11-14 00:20:03 +02:00
Torsten Ruger
9ab3de234d some helper functions
for when i started the assembler div10
in the end i did the div10 in some, so no need
2015-11-13 20:47:08 +02:00
Torsten Ruger
4a8bb32039 serious bit fiddling, div10 using shift magic
forgot that arm has no division (or respectively only later models have)
many magic formulae out there, none seem to work 1000% on the
interpreter. some big 0 ending numbers are 1 off.
2015-11-13 20:46:27 +02:00
Torsten Ruger
f779b5d15f fix interpreter to simulate 32 bit machine 2015-11-13 20:31:35 +02:00
Torsten Ruger
5c862111b9 remove div and add div10
general division is for another day, the 10 version is manageable
also same code produces mod10
wip
2015-11-12 20:03:57 +02:00
Torsten Ruger
a5afca10f6 don't pass machine around, its global 2015-11-12 20:02:44 +02:00
Torsten Ruger
6f0d6d831e update arm and implement most operators
multiplication wasn’t implemented
and division isn’t part if arm
neither is rotate by register
2015-11-12 20:02:14 +02:00
Torsten Ruger
787f727974 simplify i to_s 2015-11-11 20:45:40 +02:00
Torsten Ruger
6137833140 change args argument to create method to be hash
was array and didn’t carry types and names
2015-11-11 20:41:02 +02:00
Torsten Ruger
351a747bfd mod and div for int 2015-11-11 20:36:40 +02:00
Torsten Ruger
1e7935bf85 implement byte access for some word
wouldn’t have been possible without the ruby version
2015-11-11 20:36:07 +02:00
Torsten Ruger
9bfc9cf6c2 implementing missing operators 2015-11-11 20:34:49 +02:00
Torsten Ruger
d870553a1f make ruby word byte size
was hacked as int
interestingly zero change to tests
2015-11-11 19:11:08 +02:00
Torsten Ruger
93ff44bb6f improve reinit of interpreter 2015-11-10 19:28:31 +02:00
Torsten Ruger
1efa36ed4f string sometimes gets to_s in equal while half cooked
during debugger register change or update to be precise.
without the debugger there would be no access to the word
at that point and no need for this hack
2015-11-10 19:16:38 +02:00
Torsten Ruger
daffa0579e another opal hack
in opal 13 / 10 = 1.3 whereas in ruby its 1
2015-11-10 19:10:11 +02:00
Torsten Ruger
c92814440f fix integer to_s and put, with tests 2015-11-10 19:09:17 +02:00
Torsten Ruger
760a4beb86 fix some word with tests 2015-11-10 19:08:48 +02:00