NESASM - 内联方法跳转

时间:2012-05-19 09:51:09

标签: assembly methods

是否有可能在nesasm(或任何asm,它可能在nesasm中工作)中使内联'方法'跳转?

我的意思是: 我得到了这样的代码。

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

2 个答案:

答案 0 :(得分:1)

如果您的汇编程序支持某种宏,特别是一个w /参数,那么您可以将SomeMethod定义为宏并使用参数让每个实例都有自己的标签集(通过合并参数)标签名称)。

类似的东西:

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

然后当你想在你的代码中粘贴一个实例时:

SomeMethodMacro(001)

你负责保证每个实例都有不同的论点。

答案 1 :(得分:0)

不,在汇编语言中,是编译器。您可以完全控制所有使用的指令,但也可以负起全部责任。

汇编程序只是将指令从文本文件转换为二进制指令。