User Tag List

Показано с 1 по 10 из 25

Тема: Простой кросс-ассемблер для PDP11 (Windows/Linux, opensource)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    10.07.2013
    Адрес
    г. Москва
    Сообщений
    1,432
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как можно собрать вот это?)
    Вложения Вложения

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DJs3000 Посмотреть сообщение
    А как можно собрать вот это?)
    Можно доработать транслятор.

    Я глянул файлы и заметил один конфликт с существующим компилятором. У меня любое некомпилируемое слово - это метка. Число - метка. Двоеточние необязательно и переводы строки игнорируются. Меня просили так сделать, потому что был какой то такой компилятор.

    Вот например:

    Код:
    LABEL1	MOV R0, R1
    	MOV R2, R4	MOV R3, R6
    2	MOV R4, R5
    LABEL2 LABEL3 NOP NOP NOP LABEL 4 NOP NOP
    А в файлах выше - любое число выводится как байт (аналог .BYTE или DB). Или слово.

    Код:
    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.

  4. #3

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    614
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    137 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    наберёте команду руками или бат файл нужный напишите и будет вам счастье )))
    Так и делаю. т.е. делал изредка, когда приперало. Просто при этом все мои исходники приходится приводить в строгое соответствие со стандартами макро11. А я не пользуюсь РТ11 и не пишу для неё, я на БКшке Андосом как самым простым средством пользуюсь. А кросс средства, если они идут в виде исходников, всегда под свои нужды допилить можно. И очень раздражает всего 6 символов в метке. Самоочевидные уникальные имена быстро заканчиваются.

    Цитата Сообщение от vinxru Посмотреть сообщение
    Можно доработать транслятор.
    До макро11 довольно много дорабатывать придётся, исходники выше - именно каноническое макро11.
    Цитата Сообщение от vinxru Посмотреть сообщение
    У меня любое некомпилируемое слово - это метка. Число - метка.
    Плохое решение, ставшее следствием необязательности двоеточия после метки.
    И число не всегда должно быть меткой, в некоторых случаях оно должно быть числом - абсолютным адресом.
    В зависимости от типа ассемблерной команды нужно по-разному парсить аргументы.
    Например. В командах ветвления и SOB допускаются арифметические выражения с числами и глобальными метками или локальная метка.
    В командах, где 6-битовые поля [адресация][регистр] типа TST, MOV и т.п. допускаются арифметические выражения с числами и глобальными метками, а локальная метка - ошибка компиляции. Если арифметическое выражение - просто одно число, - то это адрес, тип адресации 6 или 7 если есть '@'.
    В командах типа EMT, MARK допускаются арифметические выражения с числами и глобальными метками (константными переменными), которые на данный момент уже определены, не определены - ошибка компиляции.
    В арифметических выражениях не допускаются локальные метки, т.к. непонятно, как их от чисел отличать. Т.к. во многих ассемблерах локальной меткой считается любое слово, начинающееся с цифры и заканчивающееся двоеточием. И эта конструкция конфликтует с любым типом записи чисел, хоть префиксной, хоть постфиксной.

    В общем - нужно писать несколько разных специализированных парсеров выражений, для разных конкретных случаев.

    Цитата Сообщение от vinxru Посмотреть сообщение
    переводы строки игнорируются.
    А переводы строки вроде бы все компиляторы игнорируют, кроме спец. случаев. Перевод строки используется чтобы найти конец комментария и сгенерировать ошибку, если он встретится внутри ограничивающих символов команды .ASCII
    Цитата Сообщение от vinxru Посмотреть сообщение
    получится какой то Форт. Что бы мы не написали - оно скомпилируется.
    И как правило, совсем не так, как ожидали. Так что лучше и не пытаться делать универсальный комбайн.

    Цитата Сообщение от vinxru Посмотреть сообщение
    Число в аргументе команды это метка или смещение?
    В командах ветвления - однозначно метка (в нормальных ассемблерах), иначе никак не отловить ошибку неверного перехода.

    - - - Добавлено - - -

    Цитата Сообщение от vinxru Посмотреть сообщение
    заменю локальные метки с чисел на числа с долларом
    Лучше знак доллара внести в разрешённые символы для метки, считать его ещё одной буквой. Т.к. A$BLK1 - вполне себе легальное имя метки, как и 30$2$
    Последний раз редактировалось gid; 12.05.2016 в 14:57.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SjASMPlus Z80 кросс ассемблер
    от Aprisobal в разделе Программирование
    Ответов: 1663
    Последнее: 19.06.2021, 01:36
  2. Простой PDP11 CPU модуль на Н1806ВМ2
    от bigral в разделе ДВК, УКНЦ
    Ответов: 141
    Последнее: 20.10.2019, 15:27

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •