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