[an error occurred while processing this directive]
|
Не даром кто-то когда-то обозвал пики "это не процессоры, это микропрограммные автоматы".
IMHO у бегалки между периферийными блоками не очень наберётся работы "на целый словарь". Я имею ввиду, что почти нечего "шить" будет - и преимущество размера кода за счёт многократного сворачивания идёт лесом.
А в других местах преимущества какие?
Скажем, проверить бит регистра периферийного устройства - у пикообразия - одна команда. Да, бит в ней больше, чем у "фортообразия". Но она одна.
А у "фортообразия" что будет?
На каждый регистр и бит слов не напасёшся, а если напасёшся, то пик и выйдет :-), и того:
1) LIT адреса периферийного регистра
2) @
3) LIT маска
4) and
Причём преимущества по объёму кода (в битах) мелко (4..6) - разрядных комнад на этапах 1) и 3) тоже имеют шанс пойти лесом, так как перед литералом может понадобится подравнивать NOP-ами до ширины слова.
Да, устандартизовав положения "общеупотребительных" битов (начиная от бита ошибки) можно сделать некие
\ errmask как очень часто употребляемую - можно даже в базовый
\ состав ввести - команда короткая, кладёт на стек нужное число
\ is_error оставляет статусный регистр устройства на стеке
\ для дальнейшего анализа
: is_error ( addr -- status ) @ dup errmask and ;
и тогда уже проверка ошибки сокращается до
status_reg \ call или lit, возможно после предыдущего подровнян nop-ами
is_error \ call
IF
Но у пикообразия это делает ОДНА команда, занимающая столько же бит,
сколько is_error (call не него), и выполняющаяся в попугаях гораздо быстрее.
Аналогично с установкми битов на периферийных регистрах, подстчётом циклов и т.п.
E-mail: info@telesys.ru