瀏覽代碼

zasm: try for regular number or symbol before parsing expr

Previously, we would mess up literals like '-'.
pull/10/head
Virgil Dupras 5 年之前
父節點
當前提交
bccf933ea9
共有 2 個檔案被更改,包括 7 行新增1 行删除
  1. +6
    -1
      apps/zasm/expr.asm
  2. +1
    -0
      tools/tests/zasm/test1.asm

+ 6
- 1
apps/zasm/expr.asm 查看文件

@@ -2,6 +2,11 @@
; We expect (HL) to be disposable: we mutate it to avoid having to make a copy.
; Sets Z on success, unset on error.
parseExpr:
; Before we evaluate an expression, we first try for a regular number or
; symbol. We do this because parsing expressions can mess up some values
; with its splitting logic. For example '-' is going to end up '\0'.
call parseNumberOrSymbol
ret z
push de
push hl
call _parseExpr
@@ -19,7 +24,7 @@ _parseExpr:
ld a, '*'
call _findAndSplit
jp z, _applyMult
jp parseNumberOrSymbol
ret ; failure

; Given a string in (HL) and a separator char in A, return a splitted string,
; that is, the same (HL) string but with the found A char replaced by a null


+ 1
- 0
tools/tests/zasm/test1.asm 查看文件

@@ -24,3 +24,4 @@ label2: .dw 0x42
rl d
rr e
rlc c
cp '-'

Loading…
取消
儲存