fk0, легенда (24.10.2012 23:29 - 23:46, просмотров: 209) ответил Гудвин на Ну их в баню с идиотским размещением векторов прерываний...
Ничего идиотского. Лучше бы про память в которую лазать через банку по 32 кбайта сказал (прямо как на пик16ф628, только там банка 256 байт и ассемблер). Для тех у кого меньше 32к неактуально. Одна переключаемая банка, даже если с поддержкой компилятора через far адреса, всё равно херня получается. Практически прямо как ZX-Spectrum-128 (там 16кбайт банка). Даже с поправкой на то, что гарвард архитектура (не нужна отдельная банка для кода) типично операции все трёхадресные и нужна ещё общая банка подстек и т.п. Т.е. 4шт. переключаемых банки -- минимум. И чтоб SFR через который собственно банки переключаются не стал игольным ушком (а-ля х51) нужно ещё больше банок хотя бы для 2-3 вложенных функций. Т.е. 16 шт. окон для включения банок по 4кбайт смотрелось бы куда лучше чем 1 банка в 32кбайт...
И для собственно получения физического адреса из SFR регистра и указателя нужен сумматор скорей, а не логическое И со сдвигом. И SFR разрядностью на порядок по-ниже. Типа как сегментные регистры в x86 (читай те же банки -- их там ds, ss, es, fs, gs, cs -- 6 шт., а не одно игольное ушко. В сегментный регистр можно сразу (с округлением до 16 байт) адрес объекта положить и адресовать до 65536-16 байт длины объекта сразу. А как у микрочипа сделано: вначале реши задачу оптимальной укладки рюкзака для одной каждой банки (чтоб все объекты целиком влезли, иначе конец не влезшего нормально не адресуется), а потом пойми, что если у тебя все объекты большие, размером с пол-банки, то задача нифига не решается... Короче микрочип в своём репертуаре -- сами нихера нормально сделать не могут, а подсмотреть как до них за 30 лет назад сделано не умеют.
Да ещё компилято до нормальной работы с банками как всегда не допилят и будет всю жизнь глючить. Можно сделать без компилятора, чисто-библиотекой, а-ля виндовс-3.11, но с единственной одной банкой выглядит нереально глупо такое решение, опять же хоть несколько штук.
[ZX]