[an error occurred while processing this directive]
|
1) Про мапирование регистров в память. Это ОЧЕНЬ полезная вещь, реально применяемая в программе. Например есть команда Rx=Ry+mem. Как и вообще вся система команд, не считая специализированных ДСП-инструкций, рассчитана на работу с операндом "mem". Но, как следствие, нет команд типа Rx=Ry+Rz. Вот они и заменяются на Rx=Ry+mmap(@addr(Rz)). И это вполне логично, чем городить еще один класс инструкций, с тремя операндами-регистрами, просто замапить регистры в память.
Мда. Про регистры. Вы мне похоже глаза на что-то новое открываете. И отсюда вопрос - а что это за 22-битный регистр? Я про такого не в курсе. Знаю набор из 4-ACx 40-битных, 4-х Tx 16-битных, 8-ми ARx 16-битных. Причем операции с всеми вышеуказанными регистрами практически ортогональны - любой из них может быть и источником, и приемником в любой неспециализированной инструкции. Ну и всяких разных запчастей типа страниц памяти для адресации, баз/длин циркулярных буферов, баз/длин аппаратных циклов и тому потобного. А вот 22-битного не знаю ни одного.
Насчет того, что BF для начинающего удобнее, я, возможно, согласен. Но тогда уж ему PIC наверное еще удобнее, у него система команд вообще проще некуда. Зато потратив лишнюю неделю на изучение специализированных команд 55-го (или их принципиально не использовать и не замечать это такое кредо?) получается более эффективных код как по тактам, так и по размеру.
Про компиляторы - IMHO теоретически чем шире система команд и чем больше возможностей разложить имеющуюся конструкцию ЯВУ на команды ассемблера, тем больше возможностей по оптимизации. Другое дело, что сам компилер не шибко хорош, но думается это дело времени.
E-mail: info@telesys.ru