Я пытался заняться программированием 6502, и что-то не складывается. Если у него 16-битное адресное пространство, почему индексные регистры X и Y 8-битные? Используются ли они в тандеме, где X — младший байт, а Y — старший байт адреса? Если да, то как это будет работать?
Почему индексные регистры X и Y 8-битные?
Ответы (1)
Так что я подумал, и ответ оказался проще, чем я думал. Регистры индекса просто добавляются к базовому адресу (так что LDA $0200, X
добавит X к 0x0200). Если кто-то хочет использовать регистр индекса большего размера, он может использовать косвенную адресацию. :)
person
circl
schedule
09.03.2021
Да, нулевая (или прямая) страница — это своего рода массив регистров, если вы считаете 6502 примитивным дизайном RISC.
- person Nick Westgate; 10.03.2021
x
иy
были определены как 16-битные, для вычисления индексированной адресации всегда требовался бы дополнительный цикл (а не только иногда, в зависимости от режима адресации). Кроме того, 6502 лучше всего понятен по сравнению с 6809 — цель состояла в том, чтобы работать в стороне от него, лучше оптимизируя функциональность по стоимости. Сокращение индексных регистров до 8 бит — разумный способ сделать это; вы теряете некоторую функциональность, вы также теряете много стоимости. - person Tommy   schedule 10.03.2021