А как можно собрать вот это?)
А как можно собрать вот это?)
А вот, кстати, у меня тоже вопрос возник. Если есть кросс-Макро11, то как им пользоваться? Он же obj файлы создаёт. Есть ли в природе кросс линковщик, который собирает из obj файлов исполняемый бинарник для РТ-11?
Или сложные проекты кросс средствами никто не собирает?
Про консольный эмулятор РТ11 для макро11 от Patrona мне известно, это единственное нативное средство собрать sav файл из исходников, но нужен именно кросс-Линк, для линковки.
Можно доработать транслятор.
Я глянул файлы и заметил один конфликт с существующим компилятором. У меня любое некомпилируемое слово - это метка. Число - метка. Двоеточние необязательно и переводы строки игнорируются. Меня просили так сделать, потому что был какой то такой компилятор.
Вот например:
А в файлах выше - любое число выводится как байт (аналог .BYTE или DB). Или слово.Код:LABEL1 MOV R0, R1 MOV R2, R4 MOV R3, R6 2 MOV R4, R5 LABEL2 LABEL3 NOP NOP NOP LABEL 4 NOP NOP
Если совместить вольности всех ассемблеров, то получится какой то Форт. Что бы мы не написали - оно скомпилируется.Код:TBIKLC: 0*2+TBPKL0,1*2+TBPKL0,2*2+TBPKL0,3*2+TBPKL0,4*2+TBPKL0 0*2+TBPKL1,1*2+TBPKL1,2*2+TBPKL1,3*2+TBPKL1,4*2+TBPKL1 0*2+TBPKL2,1*2+TBPKL2,2*2+TBPKL2,3*2+TBPKL2,4*2+TBPKL2 0*2+TBPKL3,1*2+TBPKL3,2*2+TBPKL3,3*2+TBPKL3,4*2+TBPKL3
Еще и макросы прямо в код!
Это вообще что делает и как компилить?Код:MOV #OV460,@#460 MOV #340,@#462 CALL PPSTAR AR2TY #242 TY #60 TY #14 AR2TY #240 TY #66 AR2TY #241 TY #60 TY #35,#23.,#0,#2 RESTAR: MOV #50.,WERXOR MOV #5,GORXOR
- - - Добавлено - - -
Как время появится, заменю локальные метки с чисел на числа с долларом. Это решает проблемы с командами перехода. Число в аргументе команды это метка или смещение? И вообще с локальными метками.
Добавлю include. Перекинуть код из другого проекта - это не долго.
Добавлю режимы:
Включить/выключить перевод строки
Включить/выключить : в метках
Включить/выключить обязательное использование .DB
Последний раз редактировалось vinxru; 12.05.2016 в 11:05.
Так и делаю. т.е. делал изредка, когда приперало. Просто при этом все мои исходники приходится приводить в строгое соответствие со стандартами макро11. А я не пользуюсь РТ11 и не пишу для неё, я на БКшке Андосом как самым простым средством пользуюсь. А кросс средства, если они идут в виде исходников, всегда под свои нужды допилить можно. И очень раздражает всего 6 символов в метке. Самоочевидные уникальные имена быстро заканчиваются.
До макро11 довольно много дорабатывать придётся, исходники выше - именно каноническое макро11.
Плохое решение, ставшее следствием необязательности двоеточия после метки.
И число не всегда должно быть меткой, в некоторых случаях оно должно быть числом - абсолютным адресом.
В зависимости от типа ассемблерной команды нужно по-разному парсить аргументы.
Например. В командах ветвления и SOB допускаются арифметические выражения с числами и глобальными метками или локальная метка.
В командах, где 6-битовые поля [адресация][регистр] типа TST, MOV и т.п. допускаются арифметические выражения с числами и глобальными метками, а локальная метка - ошибка компиляции. Если арифметическое выражение - просто одно число, - то это адрес, тип адресации 6 или 7 если есть '@'.
В командах типа EMT, MARK допускаются арифметические выражения с числами и глобальными метками (константными переменными), которые на данный момент уже определены, не определены - ошибка компиляции.
В арифметических выражениях не допускаются локальные метки, т.к. непонятно, как их от чисел отличать. Т.к. во многих ассемблерах локальной меткой считается любое слово, начинающееся с цифры и заканчивающееся двоеточием. И эта конструкция конфликтует с любым типом записи чисел, хоть префиксной, хоть постфиксной.
В общем - нужно писать несколько разных специализированных парсеров выражений, для разных конкретных случаев.
А переводы строки вроде бы все компиляторы игнорируют, кроме спец. случаев. Перевод строки используется чтобы найти конец комментария и сгенерировать ошибку, если он встретится внутри ограничивающих символов команды .ASCII
И как правило, совсем не так, как ожидали. Так что лучше и не пытаться делать универсальный комбайн.
В командах ветвления - однозначно метка (в нормальных ассемблерах), иначе никак не отловить ошибку неверного перехода.
- - - Добавлено - - -
Лучше знак доллара внести в разрешённые символы для метки, считать его ещё одной буквой. Т.к. A$BLK1 - вполне себе легальное имя метки, как и 30$2$
Последний раз редактировалось gid; 12.05.2016 в 14:57.
http://zx-pk.ru/threads/20626-kross-...l=1#post803922
Немного попилить и заработает с РТ, а для АнДОСа и большие проекты с ним собирал.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
а как бы сделать так что-бы адреса в листинге были не шестнадцатиричные, а восьмиричные?
Вот поправленный pdp11asm.
Исправлен опкод команды TRAP.
И адреса в листинге восьмеричные.
Для работы требуется VCRedist 2015
pdp11asm.7z
- - - Добавлено - - -
Однако, пересмотрев разные кросс ассемблеры, я пришёл к выводу, что таки нужно писать свой кросс ассемблер, для себя.
В результате множества неудачных попыток сделать сделать нечто, я решил сделать хоть что-то. И похоже, что-то получилось BKTurbo8.rar.
У меня были исходники ассемблера Turbo8, вот на их основе и сделан кросс ассемблер, со всеми ограниченными возможностями в виде отсутствия продвинутых арифметических выражений, и понимания только восьмеричных и десятичных чисел.
В архиве исходники и естественно, бинарники, очень краткая справка, как использовать и примеры использования.
Вот с примерами туго, первый пример - игра Miner из pdp11asm vinxru - это для сравнения, как оно делается там, и как тут. Ещё несколько игр: tetris (как же без него), xonix, race-play. И самое интересное, и ради чего были приложены усилия по созданию кросс ассемблера - дизассемблированные исходники музыкального редактора Rock Monitor 3.
На данный момент это сильно ранняя версия, обладающая недостатками, видимыми сразу. Пользоваться немного неудобно, и я пока собираю сам для себя лист желаний по улучшению работы. Выкладываю в общий доступ для предложений и критики со стороны.
Последний раз редактировалось gid; 05.04.2017 в 14:01. Причина: Ссылка на архив изменена
Кто-нибудь может собрать исходники из 11 сообщения? Это исходники УКНЦ биоса, причем это более новая версия по сравнению с тем, что стоит во всех наших УКНЦ. Я уже давно прошу чтоб его собрали, но никто не может
Без инструкции по сборке этот набор разрозненных файлов может собрать только настоящий УКНЦшник, который знает, что из этого является отдельным sav файлом, а что надо слинковывать между собой, и как и в каком порядке слинковывать.
Эти файлы спокойно компилируются в obj в классическом макро11, только толку от этого ноль, когда не знаешь, что с ними дальше делать.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)