suzukiplan / vgsasm

Z80 assembler for VGS-Zero
GNU General Public License v3.0
0 stars 0 forks source link

代入式の簡略表記 #15

Closed suzukiplan closed 3 days ago

suzukiplan commented 4 days ago

いちいち「LD」を書くのが野暮ったいので以下のような簡略表記を許容したい。

A = B         ; expand to -> LD A, B
(HL) = A      ; expand to -> LD (HL), A
$C000 = A     ; expand to -> LD ($C000), A    *Can omit addressing (bracketing) at load time
($C000) = A   ; expand to -> LD ($C000), A    *same as `$C000 = A`
A = (HL)      ; expand to -> LD A, (HL)
A = $FF       ; expand to -> LD A, $FF
A = $C000     ; expand to -> LD A, $C000      *Error (out of range)
A = ($C000)   ; expand to -> LD A, ($C000)    *Addressing at store requires bracketing
BC = $C000    ; expand to -> LD BC, $C000
BC = ($C000)  ; expand to -> LD BC, ($C000)
A += B        ; expand to -> ADD A, B
HL += DE      ; expand to -> ADD HL, DE
A -= B        ; expand to -> SUB A, B
A &= B        ; expand to -> AND A, B
A |= B        ; expand to -> OR A, B
A ^= B        ; expand to -> XOR A, B

例えばグローバル変数の初期化をしたい時の表記が以下のようにできる。

struct VARS $C000 {
    x ds.b 1
    y ds.b 1
}

.main
    VARS.x = 32
    VARS.y = 40
suzukiplan commented 3 days ago

done b555ff2