Przykład:
// foo.h
int foo(int k, char m);
; foo.s
.import popa, popax
.export _foo
.proc _foo
jsr popa
sta m
jsr popax
sta kl ; mlodsze 8 bitow k
stx kh ; starsze 8 bitow k
; ... zrob cos
lda wynik
ldx wynik+1
rts
.endproc
Jeśli zadeklarujesz jako fastcall, to odpada pierwsze jsr popa(x):
int __fastcall__ foo(int k, char m);
Zamiast ustalać miejsce procedurki z góry, użyj ca65 + ld65 (w przypadku więcej niż jednego parametru i/lub bez __fastcall__ jest to właściwie konieczność, bo inaczej nie zgadniesz gdzie są popa i popax - po to jest linker).
Samo wywołanie niczym się nie różni od normalnego wywołania funkcji:
// bar.c
#include "foo.h"
void bar(void)
{
int q = foo(12345, 'c');
// ...
}
Więcej przykładów w źródłach runtime cc65.
Ostatnio edytowany przez epi (2011-05-02 21:23:26)
Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.