I am using cc65 6502 simulator, which compiles code for 6502. I wish to link the 6502 code and C code and produce a binary file that I can execute.
My C code "main.c":
#include<stdio.h>
extern void foo(void);
int main() {
foo();
return 0;
}
My 6502 code "foo.s":
foo:
LDA #$00
STA $0200
The code might seem very simple but I am just trying to achieve the successful linking. But I cannot get rid of the following error:
Unresolved external '_foo' referenced in:
main.s(27)
ld65: Error: 1 unresolved external(s) found - cannot create output file
__cdecl
as default calling convention - the decorated (full) name offoo
will be_foo
- and in asm file you need use_foo
name instead offoo
. also name must be public (visible). the label usually not. you need declare_foo
as public symbol. or as function (functions usual public symbols). however this depend from concrete asm compiler. now, when you build - you got error - unresolved external symbol (_foo
i guess) - exactly this name you must implement in asm – RbMm_foo.s
and in the main.c I changed the function name to_fib
, but I still cannot get rid of that error. – Milap Jhumkhawalacl65 -t sim6502 main.c _fib.s -o fib
yes, this compiles the C for 6502, github.com/cc65/cc65 – Milap Jhumkhawala