suzukiplan / vgsasm

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

マクロ対応 #11

Closed suzukiplan closed 4 days ago

suzukiplan commented 5 days ago

以下のようことをやりたい

#macro memcpy(dst, src, size) {
    ld bc, dst
    ld de, src
    ld hl, size
    out (IO.memcpy), a
}

.main
    memcpy(VRAM.palette, data_palette, 512)

これをやれば連続する処理の記述がかなりシンプルになる。

要するに引数あり & 複数行対応がシンプルに記述できる #define (vgsasmの #define は複数行や引数対応をしない)

suzukiplan commented 5 days ago

再帰呼出しは非対応でOK

suzukiplan commented 5 days ago

関数から別の関数呼び出しは必要

suzukiplan commented 5 days ago
suzukiplan commented 5 days ago

コードサイズを最小化するため単純展開にすべきかサブルーチン化すべきかは要検討。 サブルーチン化しておき関数が使われたら展開するのがスマートな気がしないでもない。 その場合は関数内で ret の指定が必要になる。

suzukiplan commented 4 days ago

サブルーチン化すると引数対応が厄介になるのでサブルーチン化はしない。

suzukiplan commented 4 days ago

関数というと誤解が生じそうなので funmacro に変更

suzukiplan commented 4 days ago

https://github.com/suzukiplan/vgsasm/commit/2fe46c12af6ed82b6bac9fab31e51f9da6125be4