PC-01 Lviv

It is currently 28 Mar 2024, 13:39

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 13 posts ] 
Author Message
PostPosted: 03 Jul 2014, 12:49 
Offline

Joined: 03 Jul 2014, 12:15
Posts: 6
Друзья, здравствуйте!

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

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

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

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

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

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

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


Top
   
PostPosted: 03 Jul 2014, 13:07 
Offline
Site Admin
User avatar

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

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


Top
   
PostPosted: 03 Jul 2014, 22:05 
Offline

Joined: 03 Jul 2014, 12:15
Posts: 6
Первым делом сделаю ORG.
Quote:
ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей :).
Прости пожалуйста, не понял. В какие мажорные релизы и какие бинари? : )

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


Top
   
PostPosted: 03 Jul 2014, 23:25 
Offline
Site Admin
User avatar

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


Top
   
PostPosted: 04 Jul 2014, 07:38 
Offline

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

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


Top
   
PostPosted: 04 Jul 2014, 10:41 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Понял, тогда пока что добавляю функционал.
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )

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


Top
   
PostPosted: 21 Jul 2014, 15:29 
Offline

Joined: 03 Jul 2014, 12:15
Posts: 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?) символов.

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

Спасибо! ; -)


Top
   
PostPosted: 21 Jul 2014, 16:21 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Ах, да, также добавлена поддержка выдачи результата в бинарном виде.
Флажок --binary или -b.

Там ещё нету ни SET, ни EQU.
Жаль. Тогда, пока, я не потещу. Честно говоря, вывод не в бинарь практического смысла мало имеет. В любом случае бинарь можно запихать в HEX-редактор. Жду обновки!
Quote:
У меня есть несколько вопросов.
Читая мануал, у меня создалось впечатление, что имя для SET и EQU - это не лейбел. Тоесть, не может заканчиваться двоеточием.
Знаю, что некоторые ассемблеры для SET и EQU используют тот-же лейбел.

Мне тоже было бы удобнее добавить в ассемблер поддержку SET и EQU через лейбел.
(Чтобы не вводить туда отдельного понятия имени для псевдо-операций)
Что-то типа
ADDR: SET 5
NLEN: EQU 10
вместо
ADDR SET 5
NLEN EQU 10
Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Code:
label1: nop
jmp label1
Сначала с двоеточием, а потом без - просто по имени. В таком окнтексте NLEN: EQU 10 - это ошибка компиляции. А вот с точки зрения использования констант и лейб, разницы, по идеи никакой. Грубо говоря, если у меня на 10000 строке стоит лейба label1, и есть константа const1, которой присвоено 10000, я могу лупить в коде и то и то, куда захочу, а компилятор поменяет их на 10000.
Quote:
Лейбы было бы лучше иметь чувствительные к регистру или нет?
Интересный вопрос. Я стараюсь писать код, чтобы любой вариант его компилил. Но думаю, все-таки, что пусть лучше будут нечувствительны. Как бы сами команды-мнемоники (MOV, ADD и т.д.) нечувствительны, поэтому пусть лучше все будет все нЕчУвСтВиТеЛьНыМ.
Quote:
Также в том, что я читал было ограничение на длинну лейбы - 5 (или 6?) символов.
А вот отграничивать - не нужно. И так код трудночитаемый ))).


Top
   
PostPosted: 23 Jul 2014, 15:27 
Offline

Joined: 03 Jul 2014, 12:15
Posts: 6
Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.
Quote:
Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Код:
label1: nop
jmp label1
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
Поэтому и вопрос был.

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

; -)


Top
   
PostPosted: 23 Jul 2014, 17:39 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.
Чудесно! А теперь еще линкер хочем ))))
Quote:
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
Поэтому и вопрос был.
это ИМЯ с ':' - это объявление лейбы. Дельше лейба кругом тоже без двеоточия используется.
Quote:
Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)
Круть! Нужно будет попробовать!


Top
   
PostPosted: 23 Jul 2014, 18:21 
Offline

Joined: 03 Jul 2014, 12:15
Posts: 6
Quote:
Чудесно! А теперь еще линкер хочем ))))
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.
Да и как его делать? Есть какие нибудь reference documents которые хотя-бы описывают объектные форматы
и конкретно описывают, что линкер должен делать, чтобы я мог придумать, как это реализовать. : )

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


Top
   
PostPosted: 24 Jul 2014, 11:10 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.
Вобщем-то не актуален :). Но только с учетом, что Ваш ассемблер сможет собирать один obj из нескольких файлов, которые имеют референсы друг на друга.


Top
   
PostPosted: 09 Jan 2015, 16:41 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : )
Кстати, автор как-то скромно умолчал, что и SET и EQU уже добавлены в транслятор.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 13 posts ] 

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited