Ещё один ассемблер для i8080
Ещё один ассемблер для i8080
Друзья, здравствуйте!
У меня лежит недопиленный ассемблер для i8080. Пока болел - пилил, было интересно с камнем 8080 разобраться.
Но сейчас там ещё нету, но будет: SET, EQU, ORG.
Нету макросов, но пока что для себя я их и не планирую реализововать.
Уже есть:
все инструкции
лейбы (вперед и назад)
там, где ожидаеться непосредственное значение можно написать выражение типа
LXI B, $+3*-4^3
(правда, скобки в выражениях не поддерживаються)
Сам ассемблер написан на С. У меня только линукс есть. Но, надеюсь, его не будет проблемой собрать
на любой платформе поддерживающей ansi C.
На данный момент он в качестве аргументов принимает имена файлов.
Но, объектный кот "плюет" просто на экран в шестнадцатиричном виде.
Писал я его в самообразовательных целях, плюс асма для 8080 не нашел под линукс.
Мне не хочеться его оставлять на пол пути.
Единственный вопрос, это в каком формате вы хотите видеть вывод? В виде Intel HEX или же что-то родное для lviv-pc?
Сам код на github'е:
http://github.com/vni/i8080
По мере желания и времени все-же хочу его довести до какого-то логически законченного состояния.
Спасибо!
У меня лежит недопиленный ассемблер для 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
Добрый день!
Это же просто прекрасно, иметь внятный асм для ПК-01! Думаю, сейчас сюда "набежит" Олег с пожеланиями, а я пока выскажу свое видение. Думаю, было б прекрасно, кроме HEX-а уметь формировать еще и бинарь. В таком случае, добавлением нехитрого недера в начале файла, мы можем получить готовый lvt файл. При этом, нужно чтобы ассемблер обязательно имел инструкцию, которая б задала стартовый адрес.
ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей
.
Это же просто прекрасно, иметь внятный асм для ПК-01! Думаю, сейчас сюда "набежит" Олег с пожеланиями, а я пока выскажу свое видение. Думаю, было б прекрасно, кроме HEX-а уметь формировать еще и бинарь. В таком случае, добавлением нехитрого недера в начале файла, мы можем получить готовый lvt файл. При этом, нужно чтобы ассемблер обязательно имел инструкцию, которая б задала стартовый адрес.
ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей
Re: Ещё один ассемблер для i8080
Первым делом сделаю ORG.
Да, и спасибо быстрый ответ! : )
Прости пожалуйста, не понял. В какие мажорные релизы и какие бинари? : )ПС И еще от себя, безобразного лентяя, хотел добавить, что хорошо б на мажорные релизы иметь подборочку скомпиленых бинарей.
Да, и спасибо быстрый ответ! : )
Re: Ещё один ассемблер для i8080
Мажорные релизы, это более менее, прилизанные версии ассемблера (у которых major версия меняется). Сейчас Вы предлагаете только сорсы, которые нужно компилить, а ленивый я (тем более под Виндой) скорее всего этого не будет делать. А вот exe файл - самое оно
.
Re: Ещё один ассемблер для i8080
Понял, тогда пока что добавляю функционал.
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )
Вообщем, об изменениях буду сообщать здесь. : )
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )
Вообщем, об изменениях буду сообщать здесь. : )
Re: Ещё один ассемблер для i8080
Да да, и без EQU тоже никуда! Вобще-то, если выйдет что-то, что понравится людям (это не мне, это еще и другим), то под Винду я смогу собирать время от времени.nickname wrote:Понял, тогда пока что добавляю функционал.
Тем более, что без того же ОРГ он не особо полезен.
Потом придумаю, как под винду собрать.
У меня её просто и близко нет. : )
Вообщем, об изменениях буду сообщать здесь. : )
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?) символов.
Стоит ли лейбы ограничивать по длинне?
Спасибо! ; -)
Наконец-то. Сел за него. Вообщем, добавил 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
Жаль. Тогда, пока, я не потещу. Честно говоря, вывод не в бинарь практического смысла мало имеет. В любом случае бинарь можно запихать в HEX-редактор. Жду обновки!nickname wrote:Ах, да, также добавлена поддержка выдачи результата в бинарном виде.
Флажок --binary или -b.
Там ещё нету ни SET, ни EQU.
Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:nickname wrote:У меня есть несколько вопросов.
Читая мануал, у меня создалось впечатление, что имя для SET и EQU - это не лейбел. Тоесть, не может заканчиваться двоеточием.
Знаю, что некоторые ассемблеры для SET и EQU используют тот-же лейбел.
Мне тоже было бы удобнее добавить в ассемблер поддержку SET и EQU через лейбел.
(Чтобы не вводить туда отдельного понятия имени для псевдо-операций)
Что-то типа
ADDR: SET 5
NLEN: EQU 10
вместо
ADDR SET 5
NLEN EQU 10
Code: Select all
label1: nop
jmp label1
Интересный вопрос. Я стараюсь писать код, чтобы любой вариант его компилил. Но думаю, все-таки, что пусть лучше будут нечувствительны. Как бы сами команды-мнемоники (MOV, ADD и т.д.) нечувствительны, поэтому пусть лучше все будет все нЕчУвСтВиТеЛьНыМ.nickname wrote:Лейбы было бы лучше иметь чувствительные к регистру или нет?
А вот отграничивать - не нужно. И так код трудночитаемый ))).nickname wrote:Также в том, что я читал было ограничение на длинну лейбы - 5 (или 6?) символов.
Re: Ещё один ассемблер для i8080
Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.
Поэтому и вопрос был.
Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)
; -)
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.
Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.Стоп-стоп. Двоеточие двоеточием, а лейба лейбой. Двоеточие же не есть частью названия, а просто указывает, что это лейба. Грубо говоря:
Код:
label1: nop
jmp label1
Поэтому и вопрос был.
Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)
; -)
Re: Ещё один ассемблер для i8080
Чудесно! А теперь еще линкер хочем ))))nickname wrote:Такс, чуток подправил.
Теперь он читает файлы, указанные в виде аргументов. Выдает бинарь в файлах с теми же именами, только с разширением obj.
это ИМЯ с ':' - это объявление лейбы. Дельше лейба кругом тоже без двеоточия используется.Это понятно. Имелось в виду, что перед SET и EQ может (или должно) стоять ИМЯ. ИМЯ - это просто ИМЯ без ':'. А лейба - это ИМЯ с ':'.
Поэтому и вопрос был.
Круть! Нужно будет попробовать!nickname wrote:Касательно чувствительности к регистру понял. Будут не чувствительны. Касательно длинны тоже понял. Ограничу чем-то вроде 32х символов (это будет константа, которую можно будет легко и безболезненно менять хоть на 128, хоть на 4096)
Re: Ещё один ассемблер для i8080
Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?Чудесно! А теперь еще линкер хочем ))))
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.
Да и как его делать? Есть какие нибудь reference documents которые хотя-бы описывают объектные форматы
и конкретно описывают, что линкер должен делать, чтобы я мог придумать, как это реализовать. : )
Но сначала в любом случае должен быть доведен до какой-то логической точки ассемблер.
На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : )
Re: Ещё один ассемблер для i8080
Вобщем-то не актуаленnickname wrote: Касательно линкера. Насколько он актуален? Насколько часто проэкты состоят из множества объектников?
Я имею ввиду те, которые для i8080 предназначены и lvov-pc01 в частности.
- liberation
- Posts: 1405
- Joined: 11 Aug 2008, 17:05
- Location: Украина
- Contact:
Re: Ещё один ассемблер для i8080
Кстати, автор как-то скромно умолчал, что и SET и EQU уже добавлены в транслятор.nickname wrote:На сейчас задача минимум - добавить ещё SET и EQ. Чтоб хотя-бы для себя поставить некую "точку" на этом.
А потом можно и дальше развивать. Но меня уже не будет так грызть чувство незавершенности. : )
Carthago delenda est, Carthaginem delendam esse
Who is online
Users browsing this forum: No registered users and 0 guests

