Rename a few scripts to be more consistent.

I'm also starting to feel the urge to bud off `subx run` into its own program,
say tools/emulate_x86. It doesn't really rely on the SubX notation at all.

And then I could rename `subx translate` to `translate_subx_bootstrap`.

Only problem: the commands in the Readme get verbose. But the Readme is
gonna need surgery soon anyway to put translate_mu front and center.
This commit is contained in:
Kartik Agaram 2020-01-01 16:45:30 -08:00
parent 7ca19e4e1d
commit 23fd294d85
10 changed files with 22 additions and 20 deletions

View File

@ -63,9 +63,10 @@ $emit:name:
eb/jump $emit:end/disp8
# otherwise emit-hex(out, parse-hex-int(datum), width)
# (Weird shit can happen here if the datum of 'word' isn't either a valid
# name or a hex number. `emit` is mostly used by ntranslate, which is
# currently designed to only receive legal SubX programs. We just want to
# make sure that valid names aren't treated as (valid) hex numbers.)
# name or a hex number. `emit` is mostly used by translate_subx, which
# is currently designed to only receive legal SubX programs. We just
# want to make sure that valid names aren't treated as (valid) hex
# numbers.)
$emit:hex-int:
# . var value/eax : int = parse-hex-int(datum)
# . . push args

View File

@ -118,16 +118,16 @@ You can use SubX to translate itself. For example, running natively on Linux:
42
# or, automating the above steps
$ ./ntranslate init.linux examples/ex1.subx
$ ./translate_subx init.linux examples/ex1.subx
$ ./a.elf
$ echo $?
42
```
Or, running in a VM on other platforms:
Or, running in a VM on other platforms (much slower):
```sh
$ ./translate init.linux ex1.subx # generates identical a.elf to above
$ ./translate_subx_emulated init.linux ex1.subx # generates identical a.elf to above
$ ./subx run a.elf
$ echo $?
42
@ -433,8 +433,7 @@ runnable on a Linux system running on Intel x86 processors, either 32- or
files into an executable ELF binary.
* `subx run <ELF binary>`: simulates running the ELF binaries emitted by `subx
translate`. Useful for debugging, and also enables more thorough testing of
`translate`.
translate`. Useful for testing and debugging.
Remember, not all 32-bit Linux binaries are guaranteed to run. I'm not
building general infrastructure here for all of the x86 instruction set.

View File

@ -18,7 +18,7 @@ then
fi
echo "=== building SubX binary"
./ntranslate $*
./translate_subx $*
mv a.elf init
chmod +x init

View File

@ -15,7 +15,7 @@ then
fi
echo "=== building SubX binary"
./ntranslate $*
./translate_subx $*
mv a.elf init
chmod +x init

View File

@ -1,7 +1,7 @@
# Just a test stub for mu-init.subx
#
# Try it out like this:
# $ ./ntranslate init.linux 0*.subx mu-init.subx mu-init-test.subx
# $ ./translate_subx init.linux 0*.subx mu-init.subx mu-init-test.subx
# $ ./a.elf # should run all tests
main: # args : (address array kernel-string) -> result/ebx : int

View File

@ -304,7 +304,7 @@ echo "== translating using SubX (native only)"
for n in `seq 1 12`
do
echo ex$n
./ntranslate init.$OS examples/ex$n.subx
./translate_subx init.$OS examples/ex$n.subx
diff examples/ex$n a.elf
done
@ -313,7 +313,7 @@ done
for app in factorial crenshaw2-1 crenshaw2-1b handle
do
echo $app
./ntranslate init.$OS 0*.subx apps/$app.subx
./translate_subx init.$OS 0*.subx apps/$app.subx
diff apps/$app a.elf
done
@ -322,13 +322,13 @@ done
for app in hex survey pack assort dquotes tests sigils calls braces
do
echo $app
./ntranslate init.$OS 0*.subx apps/subx-params.subx apps/$app.subx
./translate_subx init.$OS 0*.subx apps/subx-params.subx apps/$app.subx
diff apps/$app a.elf
done
# Mu translator
echo mu
./ntranslate init.$OS 0*.subx apps/mu.subx
./translate_subx init.$OS 0*.subx apps/mu.subx
diff apps/mu a.elf
exit 0

View File

@ -1,7 +1,9 @@
#!/bin/sh
# Translate given Mu programs into ELF binaries.
# Linux only for now.
set -e
cat $* |apps/mu > a.subx
./ntranslate init.linux 0*.subx mu-init.subx a.subx
./translate_subx init.linux 0*.subx mu-init.subx a.subx

View File

@ -31,8 +31,8 @@ cat a.tests |apps/assort > a.assort
cat a.assort |apps/dquotes > a.dquotes
# A little hack. We want ntranslate to always emit identical binaries to the
# C++ translator. The C++ translator assorts segments before it processes
# A little hack. We want translate_subx to always emit identical binaries to
# the C++ translator. The C++ translator assorts segments before it processes
# string literals, so we follow the same order above.
#
# However, dquotes currently emits a separate data segment for string literals.

View File

@ -7,13 +7,13 @@
# 1. The self-hosted translator 'translate' runs in emulated mode and can
# run on Linux or BSD or Mac. However, syntax sugar passes (sigils and
# calls) can be very slow to run emulated.
# 2. The self-hosted translator 'ntranslate' runs natively on Linux. It is
# 2. The self-hosted translator 'translate_subx' runs natively on Linux. It is
# fast, but you get no trace for runs and zero error-checking on the code
# emitted by sigils and calls. Which could still be buggy.
#
# This script is a hack to get the best of all worlds. We run natively what we
# must, and leverage as much debug information as possible. This arrangement
# is snappy but requires Linux just like 'ntranslate'. You also are on your
# is snappy but requires Linux just like 'translate_subx'. You also are on your
# own to mentally map desugared instructions in traces and error messages back
# to the original sources.