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
9bfc9cf6c2
implementing missing operators
2015-11-11 20:34:49 +02:00
d870553a1f
make ruby word byte size
...
was hacked as int
interestingly zero change to tests
2015-11-11 19:11:08 +02:00
93ff44bb6f
improve reinit of interpreter
2015-11-10 19:28:31 +02:00
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
daffa0579e
another opal hack
...
in opal 13 / 10 = 1.3 whereas in ruby its 1
2015-11-10 19:10:11 +02:00
c92814440f
fix integer to_s and put, with tests
2015-11-10 19:09:17 +02:00
760a4beb86
fix some word with tests
2015-11-10 19:08:48 +02:00
6c2ce66bfc
fix old warning
2015-11-10 11:48:53 +02:00
a730dd0c99
fix some, return missing
...
must write no return error code
2015-11-09 23:29:35 +02:00
70f912f94c
allow message as keyword to access current message
...
the ultimate in meta-programming
2015-11-09 23:29:14 +02:00
a20f1570ee
temporary word hack to make it look liked indexed
2015-11-09 23:28:40 +02:00
5d80c38c87
correct register types
2015-11-09 23:28:10 +02:00
9ab7b476d5
opal fix and minor
2015-11-09 23:27:15 +02:00
368263d5a5
rewrite of field access using on_name
...
much cleaner and revealed a bug
2015-11-09 23:26:37 +02:00
dd7973875c
fix interpreter to handle registers in set
2015-11-09 23:25:34 +02:00
9075f1af37
fixes yet another order dependant bug in the test (not the code)
2015-11-09 10:04:37 +02:00
b2de1c6d79
minor fixes
2015-11-08 23:58:54 +02:00
f746218765
reinstate word creation and use for strings
...
so string constants become words, so we can fiddle with them
2015-11-08 23:58:35 +02:00
c8fa5238ee
stdout word too
2015-11-08 23:57:38 +02:00
6b9c472bec
refactor load_parfait
...
so debugger can grab and wire it easily
2015-11-08 18:35:10 +02:00
6f69995284
stab at inter to string
...
wip
2015-11-08 17:11:03 +02:00
c38775e933
add set_internal
...
and the set_slot with register
very much like the get_slot for get_internal
2015-11-08 17:10:36 +02:00
64d99d5e68
didn't need big decimal require
2015-11-08 15:18:39 +02:00
d6108e7b3a
fix interpreter overflow issue
...
flag set for bigness, result reduced
tests for + and *
fixed fibs tests
2015-11-08 15:15:55 +02:00
6ea698d397
save some to_s code
2015-11-08 14:30:42 +02:00
37564d9c2e
implement message pseudo variable (like self)
...
too easy
also simplified some tests
2015-11-08 13:55:38 +02:00
69918c8e88
add some message and remove fields
...
those fields are already present in the classes
(in the future they should be defined in some and integrated to ruby,
but that would mean parsing to boot and parsing doesn’t yet work on
opal)
2015-11-08 13:54:58 +02:00
502cfa357d
implement and test field access
2015-11-08 13:39:13 +02:00
b443103ea4
using class fields
...
instead of internal_get
2015-11-08 01:02:47 +02:00
9fd7c79cfb
mixed up class and meta, fixed
2015-11-08 00:55:10 +02:00
bcc366f8fd
bit more soml
2015-11-08 00:54:47 +02:00
3e4dcd35c7
better no method no super handling
...
also revealed bug in booting
2015-11-08 00:54:24 +02:00
5ddc96718b
slight call logic modification
...
simplification, new model is such that the upon start the method:
has a message in r0, works on it and returns to the return address.
Everything else is up to the caller
2015-11-07 21:59:39 +02:00
f2c7ed827d
simplify the __init
...
admittedly more source code, but half the runtime
mainly just using message (not new)
made possible by call sequence change
2015-11-07 21:58:19 +02:00
2315ad6920
minor cleaning
2015-11-07 21:55:04 +02:00