Сообщения без ответов | Активные темы Текущее время: 28 мар 2024, 18:15



Ответить на тему  [ Сообщений: 4 ] 
 Использование всех адресов Zero Page 
Автор Сообщение
Сообщение 08 ноя 2013, 23:16
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Изучаю ассемблер 6502. В одном из учебников встретилось такое:
Цитата:
$0000-$00FF – “Нулевая страница” (Zero Page) – используется для системных целей (для программ предпочтительны адреса $10-$9F, прочие лучше не трогать). Процессор имеет отдельные инструкции, обеспечивающие быстрый доступ к нулевой странице.

Но почему — не объясняется. Я же вижу, что в том же Battle City первые 16 байт активно используются. Так есть ли подводные камни, или всё-таки можно использовать любые адреса в Zero Page для своих целей?


Сообщение 09 ноя 2013, 01:16
Профиль
Аватара пользователя

Зарегистрирован:
22 июл 2007, 02:10
Сообщения: 313
Откуда: ниоткуда
Можно, игры это и делают. Нулевая страница укорачивает размер инструкции и ускоряет её выполнение.
Почему не советуют пользоваться нулевой страницей: обычно учебники по ассемблеру пишут с предположением, что есть некая ОС, которая занимает какую-то часть памяти, а пользователь пишет свою программу, которая бы работала под управлением ОСи. В таком случае действительно ОС скорей всего использовала бы нулевую страницу, и юзеру не рекомендуется туда лезть. Но в приставках не ОСи.

_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.


Сообщение 09 ноя 2013, 17:40
Профиль WWW
Аватара пользователя

Зарегистрирован:
06 апр 2008, 13:46
Сообщения: 119
Спасибо за информацию. Будем значит вовсю использовать :)


Сообщение 10 ноя 2013, 15:38
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Обычно на нулевой странице хранятся всякие однобайтовые переменные, которые влияют на логику игры (типа флагов, очков, координат героя итп.)

Первая страница понятное дело для стека.

А вторая страница обычно используется для DMA пересылки спрайтов (каждый Vblank). Рефрешить спрайтовую память PPU необходимо потому что она постоянно "утекает" (там используется специальный тип памяти, что-то типа DRAM, но без рефреш-логики)

Ну а остальная WRAM (work RAM, так называется RAM в NES) используется для разнообразных буферов, типа карты уровня, врагов, итп.

Но это не обязательное распределение памяти, просто разработчики так обычно делали. Но вообще можно использовать как хочешь, главное не забывай что первая страница для стека и она "заворачивается" при переполнении (слишком много вложенных JSR делать нельзя)


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 4 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB