1

nesasm (または nesasm で動作する任意の asm) でインライン 'メソッド' ジャンプを作成することは可能ですか?

つまり、次のようなコードを取得しました。

Start;
    LDA $0000
    ; here goes more code
    JSR SomeMethod ; jump to method (put back pointer on stack)
EndOfMethod: ; just help label to make code more clear
    STA $0000
    ; here goes a lot of more code
SomeMethod:
    TAX
    ;here goes more method code
    RTS ; return to position on stack

そして今、'SomeMethod' をインライン (C++ のように) にしたいので、コンパイルすると次のようになります。

Start;
    LDA $0000
    ; here goes more code
SomeMethod:
    TAX
    ;here goes more method code
EndOfMethod: ; just help label to make code more clear
    STA $0000
    ; here goes a lot of more code
4

2 に答える 2

1

アセンブラーがある種のマクロ、特にパラメーター付きのマクロをサポートしている場合、SomeMethodマクロとして定義し、パラメーターを使用して、各インスタンスに独自のラベルのセットを持たせることができます (パラメーターをラベル名に組み込むことにより)。

何かのようなもの:

defMacro SomeMethodMacro(idx):
SomeMethod$idx:
    TAX
    ;code...
EndOfMethod$idx:
endMacro

そして、コードにインスタンスを貼り付けたい場合:

SomeMethodMacro(001)

各インスタンスに異なる引数があることを保証する責任があります。

于 2012-05-19T10:06:37.167 に答える
0

いいえ、アセンブリ言語でコンパイラです。使用されるすべての命令を完全に制御できますが、すべての責任も負います。

アセンブラは、命令をテキスト ファイルからバイナリ命令に変換するだけです。

于 2012-05-19T10:01:46.893 に答える