ПК-01 ЛЬВОВ

форум о ПК-01,02 "Львов"
Текущее время: 22 июл 2018, 11:33

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Ещё один ассемблер для i8080
СообщениеДобавлено: 03 июл 2014, 12:49 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Друзья, здравствуйте!

У меня лежит недопиленный ассемблер для i8080. Пока болел - пилил, было интересно с камнем 8080 разобраться.
Но сейчас там ещё нету, но будет: SET, EQU, ORG.
Нету макросов, но пока что для себя я их и не планирую реализововать.

Уже есть:
все инструкции
лейбы (вперед и назад)
там, где ожидаеться непосредственное значение можно написать выражение типа
LXI B, $+3*-4^3
(правда, скобки в выражениях не поддерживаються)

Сам ассемблер написан на С. У меня только линукс есть. Но, надеюсь, его не будет проблемой собрать
на любой платформе поддерживающей ansi C.

На данный момент он в качестве аргументов принимает имена файлов.
Но, объектный кот "плюет" просто на экран в шестнадцатиричном виде.

Писал я его в самообразовательных целях, плюс асма для 8080 не нашел под линукс.
Мне не хочеться его оставлять на пол пути.

Единственный вопрос, это в каком формате вы хотите видеть вывод? В виде Intel HEX или же что-то родное для lviv-pc?
Сам код на github'е:
http://github.com/vni/i8080

По мере желания и времени все-же хочу его довести до какого-то логически законченного состояния.
Спасибо!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 03 июл 2014, 13:07 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
Добрый день!
Это же просто прекрасно, иметь внятный асм для ПК-01! Думаю, сейчас сюда "набежит" Олег с пожеланиями, а я пока выскажу свое видение. Думаю, было б прекрасно, кроме HEX-а уметь формировать еще и бинарь. В таком случае, добавлением нехитрого недера в начале файла, мы можем получить готовый lvt файл. При этом, нужно чтобы ассемблер обязательно имел инструкцию, которая б задала стартовый адрес.

ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей :).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 03 июл 2014, 22:05 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Первым делом сделаю ORG.

Цитата:
ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей :).

Прости пожалуйста, не понял. В какие мажорные релизы и какие бинари? : )

Да, и спасибо быстрый ответ! : )


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 03 июл 2014, 23:25 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
Мажорные релизы, это более менее, прилизанные версии ассемблера (у которых major версия меняется). Сейчас Вы предлагаете только сорсы, которые нужно компилить, а ленивый я (тем более под Виндой) скорее всего этого не будет делать. А вот exe файл - самое оно :).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 04 июл 2014, 07:38 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Понял, тогда пока что добавляю функционал.
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )

Вообщем, об изменениях буду сообщать здесь. : )


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 04 июл 2014, 10:41 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
nickname писал(а):
Понял, тогда пока что добавляю функционал.
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )

Вообщем, об изменениях буду сообщать здесь. : )


Да да, и без EQU тоже никуда! Вобще-то, если выйдет что-то, что понравится людям (это не мне, это еще и другим), то под Винду я смогу собирать время от времени.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 21 июл 2014, 15:29 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Прошу прощения за столь долгое отсутсвие...
Наконец-то. Сел за него. Вообщем, добавил EQU, тестовый пример с Pretty 8080 Assembler он собирает.
(Попутно понаходил ошибок, исправил.)
Ура.

Ах, да, также добавлена поддержка выдачи результата в бинарном виде.
Флажок --binary или -b.

Там ещё нету ни SET, ни EQU.

У меня есть несколько вопросов.
Читая мануал, у меня создалось впечатление, что имя для SET и EQU - это не лейбел. Тоесть, не может заканчиваться двоеточием.
Знаю, что некоторые ассемблеры для SET и EQU используют тот-же лейбел.

Мне тоже было бы удобнее добавить в ассемблер поддержку SET и EQU через лейбел.
(Чтобы не вводить туда отдельного понятия имени для псевдо-операций)
Что-то типа
ADDR: SET 5
NLEN: EQU 10
вместо
ADDR SET 5
NLEN EQU 10

Также есть ещё вопросы:
Лейбы было бы лучше иметь чувствительные к регистру или нет?
Также в том, что я читал было ограничение на длинну лейбы - 5 (или 6?) символов.

Стоит ли лейбы ограничивать по длинне?

Спасибо! ; -)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 21 июл 2014, 16:21 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
nickname писал(а):
Ах, да, также добавлена поддержка выдачи результата в бинарном виде.
Флажок --binary или -b.

Там ещё нету ни SET, ни EQU.

Жаль. Тогда, пока, я не потещу. Честно говоря, вывод не в бинарь практического смысла мало имеет. В любом случае бинарь можно запихать в HEX-редактор. Жду обновки!

nickname писал(а):
У меня есть несколько вопросов.
Читая мануал, у меня создалось впечатление, что имя для SET и EQU - это не лейбел. Тоесть, не может заканчиваться двоеточием.
Знаю, что некоторые ассемблеры для SET и EQU используют тот-же лейбел.

Мне тоже было бы удобнее добавить в ассемблер поддержку SET и EQU через лейбел.
(Чтобы не вводить туда отдельного понятия имени для псевдо-операций)
Что-то типа
ADDR: SET 5
NLEN: EQU 10
вместо
ADDR SET 5
NLEN EQU 10


Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Код:
label1: nop
jmp label1

Сначала с двоеточием, а потом без - просто по имени. В таком окнтексте NLEN: EQU 10 - это ошибка компиляции. А вот с точки зрения использования констант и лейб, разницы, по идеи никакой. Грубо говоря, если у меня на 10000 строке стоит лейба label1, и есть константа const1, которой присвоено 10000, я могу лупить в коде и то и то, куда захочу, а компилятор поменяет их на 10000.
nickname писал(а):
Лейбы было бы лучше иметь чувствительные к регистру или нет?

Интересный вопрос. Я стараюсь писать код, чтобы любой вариант его компилил. Но думаю, все-таки, что пусть лучше будут нечувствительны. Как бы сами команды-мнемоники (MOV, ADD и т.д.) нечувствительны, поэтому пусть лучше все будет все нЕчУвСтВиТеЛьНыМ.

nickname писал(а):
Также в том, что я читал было ограничение на длинну лейбы - 5 (или 6?) символов.

А вот отграничивать - не нужно. И так код трудночитаемый ))).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 23 июл 2014, 15:27 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.

Цитата:
Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Код:
label1: nop
jmp label1


Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
Поэтому и вопрос был.

Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)

; -)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 23 июл 2014, 17:39 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
nickname писал(а):
Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.

Чудесно! А теперь еще линкер хочем ))))

Цитата:
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
Поэтому и вопрос был.

это ИМЯ с ':' - это объявление лейбы. Дельше лейба кругом тоже без двеоточия используется.

nickname писал(а):
Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)

Круть! Нужно будет попробовать!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 23 июл 2014, 18:21 
Не в сети

Зарегистрирован: 03 июл 2014, 12:15
Сообщений: 6
Цитата:
Чудесно! А теперь еще линкер хочем ))))

Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.
Да и как его делать? Есть какие нибудь reference documents которые хотя-бы описывают объектные форматы
и конкретно описывают, что линкер должен делать, чтобы я мог придумать, как это реализовать. : )

Но сначала в любом случае должен быть доведен до какой-то логической точки ассемблер.
На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : )


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 24 июл 2014, 11:10 
Не в сети
Site Admin
Аватар пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщений: 994
nickname писал(а):
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.

Вобщем-то не актуален :). Но только с учетом, что Ваш ассемблер сможет собирать один obj из нескольких файлов, которые имеют референсы друг на друга.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ещё один ассемблер для i8080
СообщениеДобавлено: 09 янв 2015, 16:41 
Не в сети
Аватар пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщений: 1403
Откуда: Украина
nickname писал(а):
На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : )

Кстати, автор как-то скромно умолчал, что и SET и EQU уже добавлены в транслятор.

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
cron
Free counters!
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB