Почему индексные регистры X и Y 8-битные?

Я пытался заняться программированием 6502, и что-то не складывается. Если у него 16-битное адресное пространство, почему индексные регистры X и Y 8-битные? Используются ли они в тандеме, где X — младший байт, а Y — старший байт адреса? Если да, то как это будет работать?


person circl    schedule 09.03.2021    source источник
comment
Нет, X и Y не могут быть объединены. Они предназначены для использования в качестве смещения от базы. Единственный способ использовать 16-битную адресацию — косвенная индексация, при которой 16-битный базовый адрес хранится на нулевой странице.   -  person Tim Roberts    schedule 09.03.2021
comment
Это разумный вопрос, и он мог быть возможен, но я думаю, что ответ заключается в том, что ЦП работает с 8-битными значениями. Если X и Y перейдут на 16-битные, то логично, что A тоже будет, и именно это произошло в 65C816.   -  person Nick Westgate    schedule 10.03.2021
comment
Соглашаясь с @NickWestgate выше: если бы x и y были определены как 16-битные, для вычисления индексированной адресации всегда требовался бы дополнительный цикл (а не только иногда, в зависимости от режима адресации). Кроме того, 6502 лучше всего понятен по сравнению с 6809 — цель состояла в том, чтобы работать в стороне от него, лучше оптимизируя функциональность по стоимости. Сокращение индексных регистров до 8 бит — разумный способ сделать это; вы теряете некоторую функциональность, вы также теряете много стоимости.   -  person Tommy    schedule 10.03.2021
comment
Сравнение следует проводить с 6800, а не с 6809, хотя 6502 во многом лучше первого. Для многих целей наличие двух 8-битных индексных регистров гораздо полезнее, чем наличие одного 16-битного индексного регистра, как у 6800 (у 6809 есть два 16-битных индексных регистра общего назначения).   -  person supercat    schedule 12.05.2021


Ответы (1)


Так что я подумал, и ответ оказался проще, чем я думал. Регистры индекса просто добавляются к базовому адресу (так что LDA $0200, X добавит X к 0x0200). Если кто-то хочет использовать регистр индекса большего размера, он может использовать косвенную адресацию. :)

person circl    schedule 09.03.2021
comment
Да, нулевая (или прямая) страница — это своего рода массив регистров, если вы считаете 6502 примитивным дизайном RISC. - person Nick Westgate; 10.03.2021