d7b210d63a
update parser
2016-03-06 10:48:14 +02:00
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
278d71b56c
fix docs for rename
2016-02-25 12:03:11 -08:00
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
3480b97eaa
rename variable type to value_type
...
in preparation for next rename
2016-02-25 11:41:03 -08:00
afe16868b5
more some tests
2015-11-30 16:10:08 +02:00
dc560aaa5e
move main to space
2015-11-30 16:09:12 +02:00
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
ffc69fd2a5
add the hackers delight version of div10
...
better test too
remove remnants of 64bit multiplication
2015-11-21 14:19:07 +02:00
91a0365c2e
fix register shortcuts
2015-11-21 14:17:54 +02:00
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
da4003c30a
ruby fibs versions and tests for them
2015-11-20 19:12:58 +02:00
02d9a063b0
fix both parfait words to have same indexing
2015-11-20 13:25:49 +02:00
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
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
4871a52d37
better error reporting for parser
2015-11-19 10:10:13 +02:00
249f43ad34
translate and interpret new instructions
2015-11-19 10:09:55 +02:00
ac5a7ac4ca
making parfait (both) use the new byte functions
2015-11-19 10:09:24 +02:00
dffa3fbf42
adding word functions for byte access
2015-11-19 10:08:41 +02:00
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
5369dc3d52
rename get/set internal
...
to _word , because _byte versions are coming
2015-11-18 15:36:43 +02:00
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
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
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
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
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
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
8e82da0b61
fix arm (assembled) indexing
...
by having a dummy 0 index in salaam. when assembled
2015-11-15 20:42:07 +02:00
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
458610b970
implement string length
2015-11-15 11:28:16 +02:00
1633bf1289
fix position check
...
as programs get bigger the distance gets bigger
needs better approach
2015-11-15 00:38:23 +02:00
9602acf3d2
fix label positions
2015-11-15 00:36:15 +02:00
cea60f202a
small label changes
2015-11-15 00:35:43 +02:00
b30cf21bbd
fix arm indexes
...
needs rethought
fixed for static use, but what about dynamic
2015-11-15 00:35:12 +02:00
cc9b515752
fix double label names
2015-11-14 22:53:01 +02:00
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
8fa92515b5
update arm and small arm fixes
...
constants in arm chunks, needs better solution
2015-11-14 13:05:49 +02:00
dbcd39c277
helper do get the register no as int for arm
2015-11-14 00:22:23 +02:00
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
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
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
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
f779b5d15f
fix interpreter to simulate 32 bit machine
2015-11-13 20:31:35 +02:00
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
a5afca10f6
don't pass machine around, its global
2015-11-12 20:02:44 +02:00
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
787f727974
simplify i to_s
2015-11-11 20:45:40 +02:00
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
351a747bfd
mod and div for int
2015-11-11 20:36:40 +02:00
1e7935bf85
implement byte access for some word
...
wouldn’t have been possible without the ruby version
2015-11-11 20:36:07 +02:00