Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
Благодаря помощи Филиппа Краузе и Eltaron’а реализована экспериментальная поддержка модели вызова fastacall (передача параметров в регистрах). Из-за отсутствия (пока) в SDCC поддержки fastcall присутствует серьёзное ограничение: параметры должны быть только константами, вычислямыми в процессе компиляции. Фишка по умолчанию отключена. Включить можно в Libs/BasicCfg.h

С использованием модели fastcall получается такой код:
Код:
B.BORDER(B.Black); B.PAPER(B.Green); B.CLS;

;HelloWorld.c:15: Basic_BORDER(0);
	xor a,a
	call 0x229B
;HelloWorld.c:16: Basic_PAPER(4);
	ld c,#4
	call	_Basic_PAPER_fastcall
;HelloWorld.c:17: Basic_CLS();
	call	_Basic_CLS
В примере две функции, обе с одним параметром: Basic_BORDER, Basic_PAPER. Почему для первой генерится передача параметра в регистре А, а для второй функции - в регистре С? Это такой странный выход транслятора или просто пример "с листа"?