summaryrefslogtreecommitdiff
path: root/log.md
diff options
context:
space:
mode:
authorCamil Staps2016-09-19 09:50:25 +0200
committerCamil Staps2016-09-19 09:50:25 +0200
commit1f6e358d89bfa94e3f0b72a3365d1bcf5a893e6a (patch)
tree1e137868d9b2f7c7364f255aa871c66101ea00f1 /log.md
parentLog (diff)
Log 2016-09-18: vim plugin, question
Diffstat (limited to 'log.md')
-rw-r--r--log.md9
1 files changed, 9 insertions, 0 deletions
diff --git a/log.md b/log.md
index 939ce1a..239be90 100644
--- a/log.md
+++ b/log.md
@@ -3,6 +3,8 @@
Camil Staps
### 2016-09-18
+Made a Vim plugin for ABC code highlighting (camilstaps/vim-abc).
+
ARM/Thumb-2 mode switches are expensive, and since a Clean program continuously
switches between the RTS and the program itself, it is not viable to have the
RTS run in ARM mode and the code generator generate Thumb-2 code. Hence, I
@@ -16,3 +18,10 @@ Started to make changes to the code generator:
- Added `.thumb_func` before each code label
- Fix for the `str pc,[sp,#-4]!` and similar instructions, since `pc` cannot
be the `Rd` operand in a `str` instruction: copy to scratch register first.
+
+**Question**:
+Is there an interface to get an auxiliary register in the code generator? For
+example, to swap to registers a third is necessary (or the stack, but then the
+PC and SP cannot be modified). In `w_as_jsr_instruction`, the PC is stored on
+the stack, but PC cannot be `Rd` for `str`. Therefore we need an auxiliary
+register (`8c91384` does this for some cases)