PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Ещё один ассемблер для i8080 http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=311 |
Page 1 of 1 |
Author: | nickname [ 03 Jul 2014, 12:49 ] |
Post subject: | Ещё один ассемблер для i8080 |
Друзья, здравствуйте! У меня лежит недопиленный ассемблер для i8080. Пока болел - пилил, было интересно с камнем 8080 разобраться. Но сейчас там ещё нету, но будет: SET, EQU, ORG. Нету макросов, но пока что для себя я их и не планирую реализововать. Уже есть: все инструкции лейбы (вперед и назад) там, где ожидаеться непосредственное значение можно написать выражение типа LXI B, $+3*-4^3 (правда, скобки в выражениях не поддерживаються) Сам ассемблер написан на С. У меня только линукс есть. Но, надеюсь, его не будет проблемой собрать на любой платформе поддерживающей ansi C. На данный момент он в качестве аргументов принимает имена файлов. Но, объектный кот "плюет" просто на экран в шестнадцатиричном виде. Писал я его в самообразовательных целях, плюс асма для 8080 не нашел под линукс. Мне не хочеться его оставлять на пол пути. Единственный вопрос, это в каком формате вы хотите видеть вывод? В виде Intel HEX или же что-то родное для lviv-pc? Сам код на github'е: http://github.com/vni/i8080 По мере желания и времени все-же хочу его довести до какого-то логически законченного состояния. Спасибо! |
Author: | Zelya [ 03 Jul 2014, 13:07 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Добрый день! Это же просто прекрасно, иметь внятный асм для ПК-01! Думаю, сейчас сюда "набежит" Олег с пожеланиями, а я пока выскажу свое видение. Думаю, было б прекрасно, кроме HEX-а уметь формировать еще и бинарь. В таком случае, добавлением нехитрого недера в начале файла, мы можем получить готовый lvt файл. При этом, нужно чтобы ассемблер обязательно имел инструкцию, которая б задала стартовый адрес. ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей . |
Author: | nickname [ 03 Jul 2014, 22:05 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Первым делом сделаю ORG. Quote: ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей .
Прости пожалуйста, не понял. В какие мажорные релизы и какие бинари? : )Да, и спасибо быстрый ответ! : ) |
Author: | Zelya [ 03 Jul 2014, 23:25 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Мажорные релизы, это более менее, прилизанные версии ассемблера (у которых major версия меняется). Сейчас Вы предлагаете только сорсы, которые нужно компилить, а ленивый я (тем более под Виндой) скорее всего этого не будет делать. А вот exe файл - самое оно . |
Author: | nickname [ 04 Jul 2014, 07:38 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Понял, тогда пока что добавляю функционал. Тем более, что без того же ОРГ он не особо полезен. Потом придумаю, как под винду собрать. У меня её просто и близко нет. : ) Вообщем, об изменениях буду сообщать здесь. : ) |
Author: | Zelya [ 04 Jul 2014, 10:41 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote: Понял, тогда пока что добавляю функционал.
Да да, и без EQU тоже никуда! Вобще-то, если выйдет что-то, что понравится людям (это не мне, это еще и другим), то под Винду я смогу собирать время от времени.
Тем более, что без того же ОРГ он не особо полезен. Потом придумаю, как под винду собрать. У меня её просто и близко нет. : ) Вообщем, об изменениях буду сообщать здесь. : ) |
Author: | nickname [ 21 Jul 2014, 15:29 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Прошу прощения за столь долгое отсутсвие... Наконец-то. Сел за него. Вообщем, добавил 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?) символов. Стоит ли лейбы ограничивать по длинне? Спасибо! ; -) |
Author: | Zelya [ 21 Jul 2014, 16:21 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote: Ах, да, также добавлена поддержка выдачи результата в бинарном виде.
Жаль. Тогда, пока, я не потещу. Честно говоря, вывод не в бинарь практического смысла мало имеет. В любом случае бинарь можно запихать в HEX-редактор. Жду обновки!Флажок --binary или -b. Там ещё нету ни SET, ни EQU. 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?) символов.
А вот отграничивать - не нужно. И так код трудночитаемый ))).
|
Author: | nickname [ 23 Jul 2014, 15:27 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Такс, чуток подправил. Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj. Quote: Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.Код: label1: nop jmp label1 Поэтому и вопрос был. Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096) ; -) |
Author: | Zelya [ 23 Jul 2014, 17:39 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote: Такс, чуток подправил.
Чудесно! А теперь еще линкер хочем ))))Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj. Quote:
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
это ИМЯ с ':' - это объявление лейбы. Дельше лейба кругом тоже без двеоточия используется.Поэтому и вопрос был. Quote: Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)
Круть! Нужно будет попробовать!
|
Author: | nickname [ 23 Jul 2014, 18:21 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote: Чудесно! А теперь еще линкер хочем ))))
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности. Да и как его делать? Есть какие нибудь reference documents которые хотя-бы описывают объектные форматы и конкретно описывают, что линкер должен делать, чтобы я мог придумать, как это реализовать. : ) Но сначала в любом случае должен быть доведен до какой-то логической точки ассемблер. На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом. А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : ) |
Author: | Zelya [ 24 Jul 2014, 11:10 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote:
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Вобщем-то не актуален . Но только с учетом, что Ваш ассемблер сможет собирать один obj из нескольких файлов, которые имеют референсы друг на друга.
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности. |
Author: | liberation [ 09 Jan 2015, 16:41 ] |
Post subject: | Re: Ещё один ассемблер для i8080 |
Quote: На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
Кстати, автор как-то скромно умолчал, что и SET и EQU уже добавлены в транслятор.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : ) |
Page 1 of 1 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |