Bugfixed version for ARM11 of DJBs qhasm. nostack branch ditches the stack pointer.
Shell C Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
Makefile
README.md
compile
critbit0-test1.c
critbit0.h
critbit0_allprefixed.c
critbit0_clear.c
critbit0_contains.c
critbit0_delete.c
critbit0_firstprefixed.c
critbit0_insert.c
do
int64.h
int64.h.test.c
int64.h:1-longlong
int64.h:4-long
int64.h:8-stdint
int64.h:9-inttypes
limitmalloc-test1.c
limitmalloc.h
limitmalloc_close.c
limitmalloc_open.c
limitmalloc_open_if2.c
load
qhasm-amd64
qhasm-amd64-desc
qhasm-amd64avx
qhasm-arm
qhasm-arm-desc
qhasm-as
qhasm-avx
qhasm-avx-desc
qhasm-fp
qhasm-ops.c
qhasm-regs.c
qhasm-wrapper
str0-test1.c
str0-test2.c
str0-test3.c
str0-test4.c
str0-test5.c
str0.h
str0_colon.c
str0_concat.c
str0_concatc.c
str0_copy.c
str0_copyc.c
str0_copycl.c
str0_equal.c
str0_equalc.c
str0_free.c
str0_getline.c
str0_increment.c
str0_length.c
str0_putline.c
str0_uint64.c
str0_word.c
tests.exp
tests.out
uint32.h
uint32.h.test.c
uint32.h:1-int
uint32.h:4-long
uint32.h:8-stdint
uint32.h:9-inttypes
uint64.h
uint64.h.test.c
uint64.h:1-longlong
uint64.h:4-long
uint64.h:8-stdint
uint64.h:9-inttypes
uint8.h
uint8.h.test.c
uint8.h:1-char
uint8.h:8-stdint
uint8.h:9-inttypes

README.md

QHASM

Modified version of qhasm for ARM11. This was done to support my implementation of Prøst on ARM11.

Notes and changes

  • Since the machine description is a shell script, and the Raspberry Pi on which I was running this was quite slow, it has a small modification to cache the output the machine description shell script. commit

  • it has a flag-setting 'and' and support for the = flag

  • Some syntax fixes in generated code

  • Some hacks to overcome register allocator limitations (>32 bit loads have restrictions the allocator doesn't understand) e.g. commit

  • Some bespoke modifications to have even wider stores.

There is also a 'stackless' branch, where the stack pointer is made available to the register allocator. This is the version used by my Prøst implementation. This modification does of course mean that you can't use the stack anymore, and need to store/load the stack pointer somewhere (as in this line).

If you have any further questions, feel free to ask me.

Cheers,

Thom Wiggers