GBA ASM - День 24: Компилирование вместе с C — Архив WASM.RU
Компиляция с C?
Да, сегодня мы используем как ASM, так и C++-функции в отдельных файлах, скомпилировав оба.
C++-файле
В test.cpp :
Код (Text):
/* НАЧАЛО КОДА */ #include "C:\devkitadv\include\gba.h" extern "C" { void SetThePixel(); /* ASM-функция использует C-соглашение */ } int main() { REG_DISPCNT = 0x403; /* режим 3 */ SetThePixel(); /* ASM-функция */ while((*KEYS)&KEY_START); /* ждём нажатия на клавишу 'Start' */ REG_DISPCNT = 0; /* нет режима (точка исчезнет) */ while(1); return 0; } /* КОНЕЦ КОДА */ASM-файл
Код (Text):
В test.S : <p> @-- НАЧАЛО КОДА --@ .global SetThePixel SetThePixel: ldr r1,=0x6000200 ldr r2,=0x00FF str r2,[r1] @ красная точка где-то на экране bx lr @return; @-- CODE END --@Замечание: сделайте перевод строки в конце каждого из файлов.
Компиляция
Считая, что оба исходника находятся в одной директории и C:\devkitadv\bin\ находится на пути, то для компиляции потребуется следующее:
Код (Text):
gcc test.S test.cpp objcopy -O binary a.out test.gbaЗатем запустите TEST.GBA, чтобы убедиться в работоспособности примера.
Обзор этого дня
Ссылки:
Надеюсь, вам понравилось. © Mike H, пер. Aquila
GBA ASM - День 24: Компилирование вместе с C
Дата публикации 10 сен 2006