Commit Graph

86 Commits

Author SHA1 Message Date
b804be5f70 fix dynamic call
which had the method in the regsiter, not the binary.
Single SlotToReg added (and some tests)
Which amazingly fixed all broken binary tests
2018-06-25 00:19:43 +03:00
068bda492c implement DynamicJump for Arm
which is in fact the same as return (moving address into pc)
2018-06-24 19:13:55 +03:00
db459fcd3d fix label loading in arm
was still loading the integer address
instead of the return address's address
Hello World working
2018-06-19 17:35:00 +03:00
956c2ebe54 make arm use branch_lsteners 2018-06-19 10:51:03 +03:00
698c845297 seperate position create and register
many test fixes
2018-06-15 22:00:49 +03:00
5ec235d049 fixes outstanding misc, All green
Well. it's been a while, positioning is fixed (again)
apart from the upcoming BranchListener
2018-06-10 13:19:55 +03:00
5815d32bde make the instructions jump over the BinaryCode end 2018-06-07 19:27:44 +03:00
4ab6d62acf small arm fixes etc 2018-06-06 00:53:41 +03:00
d7b3368b28 fix some pesty errors
need to fix instruction overlap beofre interpreter starts again
2018-06-05 19:05:12 +03:00
8d953a619f propagate instruction positions
still overlapping onto binaries, but a start
2018-06-05 18:11:25 +03:00
1d1c7105b4 introduce some helper methods 2018-06-02 23:02:59 +03:00
0e155315aa movs is not allowed into pc
Illegal instruction it says
Otherwise the status update is nice (for branches) and we’ll keep
2018-05-31 14:03:25 +03:00
67100a3ef8 write adjusted address
and rename integer to address in label
1k hurray
2018-05-31 00:07:58 +03:00
0dc89c772a get the label int to work consistently
still need to use it in the return
2018-05-30 10:54:18 +03:00
074ec34659 wip, fixed some label, need more fixing 2018-05-30 10:29:38 +03:00
b81d9565de fix binary code offset when calling
in other words, remember the arm pipeline being 8
2018-05-29 17:03:20 +03:00
8d8cc4b016 more test fixing
only one bug to go
2018-05-24 21:20:56 +03:00
49c4d170ce make the interpreter platform
but still using the risc_instruction stream
2018-05-17 09:31:36 +03:00
39902401b9 positioning code by setting first method code
codes will initial (and on reset) propagate the whole chain
2018-05-13 15:28:10 +03:00
2d901bf7b6 not wrapping the cpu initial jump anymore
also introduce padding after cpu_init (wip)
2018-05-12 18:36:59 +03:00
776a97986d fix instruction positioning
use at as at and only compute difference when needed (to determine if
there is a jump in binary)
Easier to understand that way
2018-05-11 18:36:45 +03:00
7ca7e92dda remove link exception class 2018-05-08 20:22:04 +03:00
cf06642768 start passing positions along inside the position code 2018-05-08 19:59:43 +03:00
ce3cc72f9e move all position setting into position
Position and subclasses handle the logic, external to
the classes, so it can be swapped out later
(at runtime positions can’t change)
2018-05-07 22:30:43 +03:00
68fb9b1bdc rename Position get/set 2018-05-06 20:04:02 +03:00
6b7e1e3932 remove link exception raise
need to fix move logic next
2018-05-05 23:55:50 +03:00
d65a982454 start by moving positioned(module) to position(class) 2018-05-05 19:47:18 +03:00
43d5521cfc debugging positions 2018-05-05 19:32:01 +03:00
30ca70e042 remove extra instruction and use next instead
was messing with binary writing as the assumption of 1 word writes is
baked in
2018-04-03 14:46:07 +03:00
606e3f8cb3 fix calling to binaries
used to be to the method, but we assemble the method to its own
position.
Throw in a test for binary calling
2018-03-28 13:00:03 +03:00
105e8f7092 some better and some missing arm test
for the exceptional case
2018-03-28 12:16:28 +03:00
73b7e2b22f remove all test_all
Stop manually creating the list of tests (and searching missing).
Main level test_all does a search for all test_*
also possible to run by command line with starts
2017-04-13 17:00:56 +03:00
aa79e41d1c rename register to risc
seems to fit the layer much better as we really have a very reduced
instruction set
2017-01-19 09:02:29 +02:00
da58ce30e3 put arm tests in arm module 2017-01-03 22:37:55 +02:00
d8289d4fcf try spelling correctly 2016-12-30 11:59:38 +02:00
80237e5033 rename position accessor
for future
2016-12-28 21:40:06 +02:00
8cfcb84c8d collect missing tests (and ordering) 2016-12-28 19:31:17 +02:00
9cf56b3aa6 use factory functions consistently to create instructions 2016-12-28 19:01:58 +02:00
b3eeb7db21 memory instruction refactor (small) 2016-12-14 21:05:24 +02:00
b3bf881c49 streamline arm test names and get guard to pick up right tests 2016-12-14 19:06:32 +02:00
0a0f9154e1 use Simpleconv for code_climate 2016-12-14 13:52:44 +02:00
456e9b1ec0 folded salama-arm in 2016-12-14 13:43:13 +02:00
f4f703975b removed arm and use as gem 2015-07-18 14:12:20 +03:00
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
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
bee73801eb revert to symbols
Parfait::Words were nice, but endless problems with the fact that when
you write “String” you get a string.
Symbols take care of uniqueness at the same time
2015-05-31 18:34:18 +03:00
3e9e650764 fix arm tests 2015-05-29 12:47:49 +03:00
5b10f09ea1 fix test 2015-03-28 21:12:03 +02:00
7968cadaf9 remove singleton in arm machine and use class methods 2014-10-04 17:34:51 +03:00
fba66371c0 (semi) proper fix for large moves, integers or virtual constants(was buggy) 2014-09-30 12:07:21 +03:00