about summary refs log tree commit diff stats
path: root/subx/examples
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-07-15 12:26:41 -0700
committerKartik Agaram <vc@akkartik.com>2019-07-15 12:26:41 -0700
commitaef4efb959b215a2cd830e186c083c78f7bde60a (patch)
treead3735842abc8de847ef407a83915cae4a54c26d /subx/examples
parent867894b3efdc9c9df39d8ad9b6011f01e95e2811 (diff)
downloadmu-aef4efb959b215a2cd830e186c083c78f7bde60a.tar.gz
5404 - subx/examples/ex1 now translating
The result isn't an identical binary to before, and it segfaults when
run. But it's bugfix seven.

A couple of places where we make .subx files a little more strict:

a) All .subx files must define a data segment. Even if they have no
data.

b) All .subx files must define an `Entry` label for the binary to start
at. Earlier we used to default to the start of the code label. That's
not too hard to add; we'd just need to:
  i) rename `get` to `get-or-abort`
  ii) clone a third variant of `get-or-insert` called `get` that returns
     null if the key is not found.
  iii) use `get` rather than `get-or-abort` when looking up the `Entry`
     label.
Diffstat (limited to 'subx/examples')
-rwxr-xr-xsubx/examples/ex1bin96 -> 128 bytes
-rw-r--r--subx/examples/ex1.subx3
2 files changed, 3 insertions, 0 deletions
diff --git a/subx/examples/ex1 b/subx/examples/ex1
index 1c983c03..aeb62302 100755
--- a/subx/examples/ex1
+++ b/subx/examples/ex1
Binary files differdiff --git a/subx/examples/ex1.subx b/subx/examples/ex1.subx
index 4b9f208e..0aca40f8 100644
--- a/subx/examples/ex1.subx
+++ b/subx/examples/ex1.subx
@@ -10,9 +10,12 @@
 
 == code 0x09000000
 
+Entry:
 # syscall(exit, 42)
 bb/copy-to-EBX  2a/imm32  # 42 in hex
 b8/copy-to-EAX  1/imm32/exit
 cd/syscall  0x80/imm8
 
+== data 0x0a000000
+
 # . . vim:nowrap:textwidth=0