TopSpeed был для PDP-подобных товарищей или для писюшных персоналок?
Вид для печати
TopSpeed был для PDP-подобных товарищей или для писюшных персоналок?
Живая программа ;)
Это когда-то написание BPFных фильтров вручную, а не через PCAP компилятор навеяло :D
Код:.TYP HELLO.MAC
.TITLE HELLO
.IDENT /V02.00/
START: <MOV!BLT!SWAB>,<BNE!MFPT>+<WAIT>
<BCC>+<BNE!SWAB!WAIT>+<RESET*IOT*RTI>
<BCS>+<BR>+<SWAB>+<MFPT*RTT>-<RTI>
<ADD!BGE!BR!JMP!MFPT>+<WAIT>
<SUB+BPL>+<ASL>-<JMP>-<IOT*IOT>-<IOT>
<CMP!RETURN>-<RTT*IOT>
.*'6+'c
<BIC!CMP!ROL>+'2
<MOV*RTI>+<BR!JMP>+'$
HALT
.END START
.EX HELLO
Hello World!
.
Да, а как же. Модула - язык для системного программирования. Обычно в каждой реализации есть псевдомодуль SYSTEM, через который можно иметь доступ к низкоуровневым возможностям.
Думаю, Модулы для PDP-11 со встроенным асмом нет. Смотрите, что я нашёл:
Приводится фрагмент исходника:
Я думаю, если бы встроенный асм был, то делать так не пришлось бы (А это самая прогрессивная реализация Модулы-2 от Гюнтера Доцеля!)Код:(* set up copy routine:
MOV #NumberofWords,R3;
MOV #BlockOffset,R5;
MOV SP,R0;
MOV #DataP,SP;
LOOP
MTPD (R5)+;
SOB R3
END;
MOV R0,SP;
RTS PC; *)
(* set up machine code; the X's are inserted by putXM *)
Copy[mXr3]:=012703B;
Copy[mXr5]:=012705B;
Copy[mspr0]:=010600B;
Copy[mXsp]:=012706B;
Copy[mtpd]:=106625B; Copy[sob]:=077302B;
Copy[mr0sp]:=010006B;
Copy[haltnop]:=000240B;
Copy[rtsr7]:=000207B;
Тут не подскажу, надо пробовать.
Большая удача - если удастся заполучить именно эту реализацию. Гюнтер писал, что это самая крутая реализация Модулы для PDP-11 из всех. И я ему верю.
В приведенном Вами фрагменте исходника именно то, что я и хотел увидеть. В пцшном борландовском Турбопаскале именно так же реализован встроенный асм (под 8086, естественно) - ограниченный набор асмовских инструкций вставлялся в код программы с границами асмовской вставки asm {нужные асмовские операторы} end. То есть, Модуловский компилятор это поддерживает. Правда, у Турбопаскаля были еще и т.н. inline фрагменты по директивам {+I} бинарный код {-I}, когда непосредственно в машинных кодах вставлялись процедуры и куски кода (было возможно такими вставками реализовать команды процессоров, отсутствующие во встроенном асме Турбопаскаля). Надо тогда прежде всего договориться с Гюнтером на предмет пересылки и возврата всей его коллекции 8-дюймовых дискет на вычитку (по оплате пересыла и возврата, думаю, вопрос можно решить в складчину), затем договориться с надежным обладателем не портящего дискеты работоспособного 8-дюймового флоповода на предмет вычитки чтобы он снял полные образы. Естественно, надо обговорить вопрос об авторских правах и на каких условиях Гюнтер согласится на использование его наработок. Вычитаем - подумаем о кросс-Модуле под линуху, будет от чего отталкиваться.
Не совсем так. Начиная с BP6 между asm-end вставлялся вполне полноценный ассемблерный код, умеющий нормально ссылаться на аргументы, переменные итд без всяких извратов, поддерживающий локальные метки. В BC асм был по сравнению с ним просто убогим. У меня 80% кода программ на BP состояли из асма :)
Кстати без всяких усилий прямо на BP можно было писать драйвера, подключаемые по DEVICE= с программой в одном флаконе.
А до этого (в TP5.5) вроде асма просто не было, а можно было писать коды. Впрочем с 5.5 я работал недолго и могу не знать чего-нибудь :)
/* именно то, что я и хотел увидеть. */
Насколько я понял то что вы хотели увидеть (сверху) это комментарий.., а реально (снизу) вставляют машкоды.. :)
Это трудно назвать встроенным асмом...
Уж какой есть, но все же есть. Понятно, что реализация другая и оформление другое, но, судя по приведенному листингу, эта фича в Модуле-2 присутствует. Именно то, что я хотел увидеть - не комментарий, а кусок асмовского кода PDP-11 в модуловской программе. Да, встроенный асм появился в TP 6.0. Насчет драйверов на TP ничего сказать вообще не могу, т.к. когда начал изучать формат файлов .SYS, произошел массовый перескок на Win 98. Да и смысл в таких связках драйвер+программа есть только при программировании графических программ для встроенных систем с MSDOS на борту.