GBA ASM - День 23: Использование AS — Архив WASM.RU
AS?
Похоже, что Goldroad Assembler больше не обновляется, поэтому давайте посмотрим на GNU Assembler.
Базовый синтаксис ассемблера
Насколько мне известно, базовый синтаксис тот же самый, никаких различий в использовании инструкций нет:
Код (Text):
ldr r1,=0x4000000 ; так же, как и раньшеКонстанты и препроцессор
Одно из основных различий - это константы. Чтобы объявить последнюю, используйте EQU следующим образом:
Код (Text):
.equ var, 0x2000000 ; байты 0-3, (32 бита на переменную) .equ another, 0x2000004 ; байты 4-7или
Код (Text):
.equ REG_DISPCNT, 0x4000000Вы можете захотеть сконвертировать заголовочные файлы, но есть и другая опция. Вы можете ассемблировать ваши .S-файлы (другое расширение для исходников), если вы сделаете следующее:
Код (Text):
gcc -c test.S objcopy -O binary test.o test.gbaВы сможете использовать #define, поэтому надо будет заменить '@' на '#' и всё! (Обратите внимание, что синтаксис макросов другой, поэтому вам придётся их убрать.)
День 1 с GNU
Вот код, выводящий белую точку, который можно использовать с GCC:
Код (Text):
@-- НАЧАЛО КОДА --; @ комментарии начинаются с @ #define REG_DISPCNT 0x4000000 .text @ the text section start: ldr r1,=0x403 @Режим 3 , BG2 включен ldr r2,=REG_DISPCNT str r1,[r2] ldr r1,=0xFFFF @Белый, (Знаю, что на самом деле это 0x7FFF, но какая разница) ldr r2,=0x6000200 @где-то на экране str r1,[r2] infin: b infin @-- КОНЕЦ КОДА --;Чтобы скомпилировать исходник, поместите test.S на рабочий стол. Я предполагаю, что директория с GNU-ассемблером - C:\devkitadv\:
Код (Text):
set path=C:\devkitadv\bin\ cd PATH_TO_YOUR_DESKTOP_HERE gcc -c test.S objcopy -O binary test.o test.gbaНадеюсь, что у вас не будет проблем с компиляцией файла, так как у GNU-программ есть куча заморочек...
Обзор этого дня
Я надеюсь получить ссылку на ассемблерный исходик, использующийся с C/C++. © Mike H, пер. Aquila
GBA ASM - День 23: Использование AS
Дата публикации 10 сен 2006