ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1008592 Топик полностью
RxTx (01.06.2020 14:55, просмотров: 383) ответил fk0 на Регистр нужен ОДИН. Потому, как и в массиве структур, и в структуре массивов с константной длиной массива расстояние между членами одной структуры -- константа времени компиляции. Только в одном случае она влазит в байт, во втором в два-четыре. Если компилятор не понимает -- можно аксессоры на C++ написать, где constexpr вылезет в явном виде. Можно руками закодить в C. И да, на спектруме тоже нужен один регистр. Разные поля адресуются через LD A,H : ADD A,#nn : LD H,A. Если
Индексный всмысле? Если захардкодить смещения между массивами? Стоп-стоп, давай без напёрстничества. А то уже началось "руками закодить". Ты без хардкода смещений чистый цэ код скомпиляй и покажи, какой оне у компилера на выходе будет "один". Тыж понимаешь что компилер о взаимных массивах ничего знать не будет, это знание только у тебя в голове. А когда struct{} - тогда знает. Насчет два-четыре байта смещения по индексу, говоришь? А поля инструкций не резиновые, большие 

смещения не кодируют.

> Разные поля адресуются через LD A,H : ADD A,#nn : LD H,A.

Через INC L: LD reg, (HL): INC L: LD reg, (HL) тоже неплохо заходит. Правда придется предвычислить L, но и в H адреса быстро кончатся. Демки ага, с играми уже не поканает.

До Ориона кстати экран такой в "Специалисте" был. Так что плавали. Ходили и по спектрумовскому экрану и вверх и вниз.

> Данные не обязательно хранить в памяти последовательно.

Смотря где. Ты еще амиговские чанки припомни. Сейчас же General Rule: извраты с data non-locality ведут к performance drop с вероятностью чуть менее чем всегда. Потому что кэш и ассоциативность. Потому что префетч. Потому что ширина шины. Потому разадресация тоже costly. Потому что burst'ы на шине. Потому что страничный access у DRAM.

Так что не надо вот этих вот весёлых извратов из 80х.