nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 16:31



Reply to topic  [ 13 posts ] 
Nedo-трансляторы для i8080 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Задача написать свой компилятор для PIC8080 показалась мне весьма интересной,
http://www.nedopc.org/forum/viewtopic.php?t=9310
поскольку была в некотором роде триединой: я сам мог ввести нужные мне ассемблерные команды в PIC8080, на основе этих команд писалась программа Теннис, которую своим же компилятором я и переводил в коды.
Ну и чтоб не изобретать на этом пути древних велосипедов, я слегка обозрел материалы в Инете на вопрос - как написать компилятор.
Честно говоря, меня это повергло в некоторое сомнение, ибо, если бы я учился писать компиляторы на этом материале - я, наверное, осилить такую задачу не смог бы...
Хотя встретились вещи и совершенно удивительные - компилятор, который может скомпилировать сам себя на GW-Basic, к примеру, и некоторые другие интересные проекты...

http://www.soft-info.ru/downloads/cat207
http://www.vbnet.ru/articles/showarticle.aspx?id=131
http://www.kulichki.net/kit/
http://exmortis.narod.ru/
последний сайт мне асабливо понравился, хотя конечно накопать можно еще много чего.

Основная мысль меня просто убила - написать компилятор тяжело, противно, и трудно довести это дело до победного конца, а лучше всего написать транслятор в мнемоники какого либо другого известного и распространенного языка, а уж потом готовым компилятором всё и компилить.
Может, конечно, это и не везде так, но такова основная мысль распространенного материала - Компилятор пишется так...
http://www.cast.h1.ru/Articles/compiler_writes_as.shtml

В общем, я плюнул на эти источники и написал компилятор PIC ASSM i8080 так, как умел сам, как учился сам, проводя в древние времена реверс-разработки программ-Ассемблеров для 8-битных процессоров.

А теперь - основное о чем я, собственно, хотел сказать в этом топике.
На путях обзора различных компиллеров, попалась мне интересная программулина

EDUCATIONAL ASSEMBLER I8080 VERSION 2.0 for MS Windows 95/98
Copyright 1995-2000 by Konstantin Zheludev

попробовать её можно отсюда:
http://sgu-wap.narod.ru/PIC8080/Assm80.rar

я думаю, автор не обидится на меня, ибо откуда я её взял - не запомнил, значит будем считать, что я бесплатно делаю ему рекламу. :lol:
Ничего потрясающего в этом EDUCATIONAL ASSEMBLER не было, и мои программы от Специалиста_MX, пусть тот же Теннис,
http://sgu-wap.narod.ru/Tennis/PONG.rar
этот EDUCATIONAL ASSEMBLER скомпилировать не смог, поскольку сразу не нравилось ему слово ORG, а потом он ругался на длину программы и т.д.

Короче, ничего кроме собственных примеров EDUCATIONAL ASSEMBLER я на нём не скомпилировал, но удивила меня одна опция - перевести коды ассемблера i8080 в мнемоники Z80 (что вполне не фантастично) и в мнемоники i8086 - что уже более интересно!
Свои примеры он действительно переводит, хотя несколько по-своему. И поскольку скопилировать его текст сразу не получится, нет обрамления типа
Code:
сode_seg    SEGMENT PARA 'CODE'
            ASSUME  CS:code_seg, DS:code_seg, SS:code_seg
;
            ORG  100H
BEGIN_COD:

...
code_seg    ENDS

            END  BEGIN_COD


то я и не могу сказать ничего о качестве перевода.

А сам вопрос весьма интересен, поскольку Intel всегда утверждала, что программы под i8080 можно практически безболезненно перекомпилировать под x86, переписав их в новых мнемониках.
То что это правда - я знаю, сам так делал, когда еще только осваивал IBM PC XT и перетаскивал под него всё что было наработано на Специалисте, но специальных программ мне ни попадалось ни одной.
Год назад я обсуждал этот вопрос с Витей Пыхониным, он таких программ тоже не видел, но хотел бы что-то подобное приделать к своему эмулятору.
Я тогда загорелся идеей и набросал небольшой проект, который ни протестировать ни довести до ума в то время не случилось. Но, встретив этот EDUCATIONAL ASSEMBLER, я свой проект раскопал и скомпилировал на нём компилятор ассемблера :D ASSM_MX(4К) от Специалиста_МХ, расковыривая который, я в своё время, собственно и учился как писАть компиляторы. Каково же было удивление, когда этот весьма крупный исходник после трансляции в коды x86, совершенно безошибочно скомпилировался под Tasm !
Я не помню, что я еще хотел добавить тогда в этот проект, зачем-то там 3 поля внизу задействованы... но, на мой взгляд, основную задачу этот софт выполняет.

Интерфейс понятный интуитивно,

Image

хелп есть,

http://sgu-wap.narod.ru/PIC8080/Help.HLP

чего еще надо - не знаю, а поэтому выкладываю его здесь

http://sgu-wap.narod.ru/PIC8080/ASMWizard.rar

для тестирования и битья, вдруг что хорошее получилось, а может и ашыпки есть... :wink:

Исходник ASSM_MX там тоже прилагается.

PS. Я кстати решил дотащить его до рабочего варианта под DOS - интересно что выйдет. Коды и алгоритм менять не буду, как доделаю, тоже выложу здесь.


06 Sep 2010 08:45
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Я не совсем понял - речь идёт о компиляторе или об ассемблере?...

_________________
:dj: https://mastodon.social/@Shaos


06 Sep 2010 14:07
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Quote:
Я не совсем понял - речь идёт о компиляторе или об ассемблере?...


Я сам не совсем понял, чего ты не совсем понял и в каком месте ?
Компилятор мнемоник ассемблера обычно называют Ассемблер... :wink:


06 Sep 2010 16:45
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Post 
А что подразумевается под названием PIC8080?


06 Sep 2010 22:24
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Lavr wrote:
А сам вопрос весьма интересен, поскольку Intel всегда утверждала, что программы под i8080 можно практически безболезненно перекомпилировать под x86, переписав их в новых мнемониках.
То что это правда - я знаю, сам так делал, когда еще только осваивал IBM PC XT и перетаскивал под него всё что было наработано на Специалисте, но специальных программ мне ни попадалось ни одной.
Очень сомнительна полезность оного. В первую очередь из-за специфики устройств ввода-вывода на разных платформах, даже на одном типе процессора. Т.е. реальные программы "перетаскивать" не получится, и единственная область применения - перенос сложных алгоритмов. С другой стороны, алгоритмы все-таки принято записывать не в мнемониках ассемблера... imho.


07 Sep 2010 02:00
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Lavr wrote:
Quote:
Я не совсем понял - речь идёт о компиляторе или об ассемблере?...


Я сам не совсем понял, чего ты не совсем понял и в каком месте ?
Компилятор мнемоник ассемблера обычно называют Ассемблер... :wink:


Ассемблер написать дело нехитрое - я вон свой RASM написал 13 лет назад - и до сих пор юзаю, а вот язык чуть более высокого уровня - вот это уже задача (я с такой несколько лет боролся, пока не получил более менее приемлимый результат в лице RW1P2).

_________________
:dj: https://mastodon.social/@Shaos


07 Sep 2010 17:32
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
2_Shaos

Shaos писал(а):

Quote:
Ассемблер написать дело нехитрое - я вон свой RASM написал 13 лет назад - и до сих пор юзаю


Я нигде не говорил, что дело хитрое, другой вопрос, что в некоторых статьях Инета говорится противная мысль.
Я не соревновался с "13-летним назад" :wink: Шаосом в написании каких-либо языков, желаю успехов в юзаньи.

2_jdigreze

jdigreze писал(а):

Quote:
Очень сомнительна полезность оного.


А мне кажется, что полезность очевидна. Обзор Инета показывает, что 80-й проц часто используют в качестве "автомата калашникова" в учебных заведениях. О чем я там в хелпе и упомянул.

Quote:
...из-за специфики устройств ввода-вывода на разных платформах, даже на одном типе процессора...


Полный автоматический перенос даже в рамках 2-х систем на 80-м
проце, естесственно, может обеспечить только "обыкновенное чюдо". :lol:

Quote:
...реальные программы "перетаскивать" не получится...


Я хочу рискнуть показать, что с минимальными затратами времени получится. Для этого и перетранслировал ASSM_4k от Специалиста.

Quote:
...алгоритмы все-таки принято записывать не в мнемониках ассемблера...

А если они были на ассемблере написаны, то в чем? Или в Intel дураки сидели, когда сделали i8086? а потом откатили его до i8088 и заверили всех в лёгком переносе существующего уже софта для 8-битной платформы?

2_fifan

fifan писал(а):

Quote:
А что подразумевается под названием PIC8080?


Вот тут написано: http://www.nedopc.org/forum/viewtopic.php?t=9310

Lavr писал(а):

Quote:
Ну и поскольку к i8080 всё максимально приблизилось, то назовём сий дивайс Pic8080.


10 Sep 2010 02:30
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Nedo-транслятор xlt86

Случайно мне попался dos-вариант подобной программы. Не знаю - плох он или хорош, не пробовал. Но если кто-то подобное делал, значит оно кому-то было нужно...
http://sgu-wap.narod.ru/PIC8080/xlt86.zip

xlt86.zip (~18.5kb) i8080 to i8086 (c) 1984 by Frank J. Zerilli, ms-dos port by Craig Derouen
http://www.exmortis.narod.ru/comp_src/xlt86.zip

Переводит ассемблерный текст процессора Intel 8080 в ассемблерный текст Intel 8086.
Автор: Фрэнк Церилли; ms-dos адаптация: Крэйг Дёруан
Язык исходника: .asm (Tasm)
Выходной язык: .asm (i8086)
Документация: комментарии на английском


28 Dec 2010 20:25
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Джентльмены! У кого Венда-7 есть, не сочтите за труд - попробуйте продукт?

http://sgu-wap.narod.ru/PIC8080/ASMWizard.rar

А то я как-то, может опрометчиво, сказал Shaos-у, что всё, что я пишу под
Вендой-98, пока ещё не вступало в в конфликт со старшими версиями... :-?

Даже самому чрезвычайно интересно! :wink:

_________________
iLavr


29 Aug 2012 23:03
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Доставлено:
Image


30 Aug 2012 00:19
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
Доставлено:
http://savepic.net/3335120.png

Спасибо Хардыч! :lol:
Вот я так и думал - шрифты КОИ-8 надо с программой таскать... но не сделал... :(

Но если не повисло - уже хорошо! Хотя там виснуть-то нечему - текстовый
перекодировщик с записью в файл фактически...

_________________
iLavr


30 Aug 2012 00:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Приподниму темку... вдруг допилить захочется, пока ассемблеры еще в голове плотно... :wink:

_________________
iLavr


24 Oct 2018 12:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Хотя встретились вещи и совершенно удивительные - компилятор, который может скомпилировать сам себя на GW-Basic, ...
Я про этот компилятор уже много где на форуме писал, и даже выложил его исходники,
но тем не менее он мне на моём HDD частенько попадется, и возникает желание
его код поковырять...

Не то, чтобы я не пытался это делать ранее, но всё упиралось в то, что написан
этот компилятор именно под GW-Basic, с номерами строк, а Quick-Basic, несмотря
на то, что почти совместим с GW-Basic, на некоторые конструкции "ругается". :osad:

Второй неприятный момент, что компилятор написан немцами, и весь текст внути исходника
на "немецком английском" в кодировке DOS, что порой и трансляторы не могут перевести. :-?

В общем решил я откопать GW-Basic, и посмотреть, как под ним заработает этот компилятор.
Интересно, что сам собой скомпилированный в *.EXE (есть в архиве), действительно,
успешно компилирует примеры, что я ему подсовываю!

И тут случилась интересная вещь - под GW-Basic этот исходник стартует, и в первых
же строчках на определении массивов выдаёт Out of memory!
Пришлось хелп к GW-Basic почитать... а нету у него memory больше 64 КБайт!
Причем и сам он отгрызает от memory кусок! :esurprised:
Attachment:
GW323.gif
GW323.gif [ 3.12 KiB | Viewed 9970 times ]

Вот тут я просто в тупик вошел... а как же немцы это порешали? :roll:
Но зело подумав, я пришел лишь к одному выводу: у немцев сам GW-Basic был более
стар и меньше размером.

Пришлось поискать старые GW-Basic-и: http://old-dos.ru/files/file_129.html
Attachment:
GW201.gif
GW201.gif [ 3.67 KiB | Viewed 9970 times ]

И, действительно, старые GW-Basic-и оставляют программе больше памяти!
Компилятор немцев запустился, но дальше всё пошло хуже...

Код, действительно, "пещерный", как это ругали раньше код Basic-ов, очень
много PEEK-ов и POKE-ов, которые не попадают куда надо по логике программы,
в частности, через PEEK ищут путь к текущей директории, но он не находится,
есть ассемблерные вставки через POKE и вызовы CALL по абсолютным адресам. 8)

В общем с помощью бубна и какой-то матери с ходу не завелось.
Оставлю до следующего творческого порыва... :wink:
Attachment:
GW202.gif
GW202.gif [ 3.85 KiB | Viewed 9970 times ]

_________________
iLavr


10 Dec 2019 05:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 13 posts ] 

Who is online

Users browsing this forum: No registered users and 6 guests


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:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.