有没有办法从C文件中调用6502汇编代码?

Mil*_*ala 5 c 6502

我正在使用cc65 6502模拟器,它编译6502的代码.我希望链接6502代码和C代码并生成一个我可以执行的二进制文件.

我的C代码"main.c":

 #include<stdio.h>
 extern void foo(void);

 int main() {
    foo();
    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我的6502代码"foo.s":

 foo:
      LDA #$00
      STA $0200
Run Code Online (Sandbox Code Playgroud)

代码可能看起来很简单,但我只是想实现成功的链接.但我无法摆脱以下错误:

Unresolved external '_foo' referenced in: main.s(27) ld65: Error: 1 unresolved external(s) found - cannot create output file

Nic*_*ate 5

您需要从汇编模块中导出它 - 使用C编译器使用的相同装饰:

_foo:
.export _foo
      LDA #$00
      STA $0200
Run Code Online (Sandbox Code Playgroud)

这链接到:

cl65 -t sim6502 main.c foo.s -o foo
Run Code Online (Sandbox Code Playgroud)

您可能还需要查看调用约定.