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 回答