GBA ASM - День 23: Использование AS

Дата публикации 10 сен 2006

GBA ASM - День 23: Использование AS — Архив WASM.RU

AS?

Похоже, что Goldroad Assembler больше не обновляется, поэтому давайте посмотрим на GNU Assembler.

Базовый синтаксис ассемблера

Насколько мне известно, базовый синтаксис тот же самый, никаких различий в использовании инструкций нет:

Код (Text):
  1.  
  2.     ldr r1,=0x4000000  ; так же, как и раньше

Константы и препроцессор

Одно из основных различий - это константы. Чтобы объявить последнюю, используйте EQU следующим образом:

Код (Text):
  1.  
  2. .equ var, 0x2000000 ; байты 0-3, (32 бита на переменную)
  3. .equ another, 0x2000004 ; байты 4-7

или

Код (Text):
  1.  
  2. .equ REG_DISPCNT, 0x4000000

Вы можете захотеть сконвертировать заголовочные файлы, но есть и другая опция. Вы можете ассемблировать ваши .S-файлы (другое расширение для исходников), если вы сделаете следующее:

Код (Text):
  1.  
  2.     gcc -c test.S
  3.     objcopy -O binary test.o test.gba

Вы сможете использовать #define, поэтому надо будет заменить '@' на '#' и всё! (Обратите внимание, что синтаксис макросов другой, поэтому вам придётся их убрать.)

День 1 с GNU

Вот код, выводящий белую точку, который можно использовать с GCC:

Код (Text):
  1.  
  2. @-- НАЧАЛО КОДА --;
  3. @ комментарии начинаются с @
  4. #define REG_DISPCNT 0x4000000
  5.  
  6. .text @ the text section
  7. start:
  8.     ldr r1,=0x403 @Режим 3 , BG2 включен
  9.     ldr r2,=REG_DISPCNT
  10.     str r1,[r2]
  11.  
  12.     ldr r1,=0xFFFF @Белый, (Знаю, что на самом деле это 0x7FFF, но какая разница)
  13.     ldr r2,=0x6000200  @где-то на экране
  14.     str r1,[r2]
  15.  
  16. infin:
  17.     b infin
  18. @-- КОНЕЦ КОДА --;

Чтобы скомпилировать исходник, поместите test.S на рабочий стол. Я предполагаю, что директория с GNU-ассемблером - C:\devkitadv\:

Код (Text):
  1.  
  2.     set path=C:\devkitadv\bin\
  3.     cd PATH_TO_YOUR_DESKTOP_HERE
  4.     gcc -c test.S
  5.     objcopy -O binary test.o test.gba

Надеюсь, что у вас не будет проблем с компиляцией файла, так как у GNU-программ есть куча заморочек...

Обзор этого дня

Я надеюсь получить ссылку на ассемблерный исходик, использующийся с C/C++. © Mike H, пер. Aquila


0 1.111
archive

archive
New Member

Регистрация:
27 фев 2017
Публикаций:
532