Есть ли в природе сабж? Хочется приделать к эмулятору :)
Варианты использовать нативный код не интересны в силу того что такой код небезопасен :)
Вид для печати
Есть ли в природе сабж? Хочется приделать к эмулятору :)
Варианты использовать нативный код не интересны в силу того что такой код небезопасен :)
Единственный путь не использовать нативный x86 код - это пускать нативный z80 компилятор (Hitech C) через эмуляцию CP/M, по-моему.
Кстати, сегодня произвел плановый осмотр Интернета и нашел такую прогу:
http://www.vector.co.jp/soft/win95/util/se378130.html
Она позволяет запускать CP/M-исполняемые файлы на эмуляцию из cmd Win32-совместимых ОС, при этом эмулируемый BDOS работает с локальными Windоws-ными файлами, а не образами дисков как в большинстве эмуляторов, куда файлы после правки и после компиляции надо извращенно импортировать/экспортировать, что плохо скриптуется. Т.е. работает по типу древних 22nice или ZRUN, но те безбожно глючат (под ними Hitech C мне даже не удалось запустить), а под творением мастера Мураками Hitech C не только работает, но и обеспечивается передача кода завершения от HitechC. Т.е. с учетом консольности и работы с локальными файлами, теперь работу нативного CPM-овского HitechC можно будет заскриптовать в любимый вами программинг-GUI Винды.
Хм, разве это редкость? Я писал такой же эмулятор когда-то. CP/M же классная ОС, простая до безобразия. Весь BDOS проэмулировал кроме (вроде) файлов с произвольным доступом. M80, Hitech C у меня тоже запускались и работали с файлами в файловой системе хоста. А потом наткнулся сразу штуки на три подобных эмулятора, и свой забросил. BDOS-уровень ведь намного проще эмулировать, чем BIOS и образа дисков.
Таки редкость, большинство эмулирует хост-машину, конкретную или абстрактную, а не инстанс ОС где можно только единожды стартануть переданное параметром приложение и сразу вывалиться в Винду для пост-процессинга. Я не спорю по сложности, сегодня я как раз и собирался заняться урезанием своего эмуля до такого, но сначала загуглил и нашел этот. А те что ты наверняка имеешь в виду - которые уже есть из стареньких, они ни на что не годны то ли в современной винде, то ли сами по себе, проверено.
Даже я такое писал :)
Эмулируется i8080 и CP/M, можно запустить любую программу, а если хочется родную командную строку, прилагается стандартный CCP.COM (но в нём нет командных файлов). А можно и батничек состряпать, для примера приложил два .cmd для компиляции ассемблерных и сишных программ (параметр - имя файла без расширения).
Тут соглашусь. Но количество плюшек студийных тоже впечатляет. Из самых очевидных - готовый редактор с фолдингом, подсветкой синтаксиса C и Code Completion, дебаггер, к которому можно привернуть внутренности ZXMAK для отладки и показа экрана Спектрума, подсистема проекта с поддержкой SCC, шаблоны проектов и Code Snippets, Pre и Post Build Events с макросами, поддержка ресурсов... К очередному компилятору надо либо писать IDE, либо настраивать существующие. Очень даже не лишенные недостатков (особенно для разработки на ассемблере). Собсна, IDE для любого компилятора сейчас, IMHO, нужнее, чем сам компилятор. Кстати, в студии, ЕМНИП, есть готовый парсер C-шного кода.
Глубокий дебаг аддщона к MSVS 2010 показал, что по крайнйе мере подсистема проекта там нативная.
Компилятор на C# - это да, это здорово, но их, повторюсь, есть (не на C#), и завоевывать популярность в этой нише без плюшек типа крутой IDE вероятно, будет непросто.
Я конверчу этот выхлоп в coff, цепляюсь gdb к ZXMAK2 (написал плагин, реализующий протокол gdbserver) и шагаю. В целом норм, но нормальной IDE все равно нет - или ddd, или emacs, или geany. Ко всем этим потенциальным EmBlocks, Eclipse и Netbeans не удаётся прицепить то sdcc, то gdbserver...
---------- Post added at 11:40 ---------- Previous post was at 11:33 ----------
Была бы среда, которая б умела работать с банальными Makefile'ами и позволяла бы самому указать путь к gdb и сценарий для работы с ним - всё бы работало из коробки. Возлагаю большие надежды на Clion (от создателей решарпера для Visual Studio). Они собираются сделать самую крутую C/C++ IDE, и пока что у них получается - даже первая альфа намного удобней вижлстудии.
Все эти прикручивания имеют смысл только тогда, когда в IDE интегрируется SourceLevel отладчик, т.е. можно выполнять (т.е. + движок целевой машины) и трейсить исходный код и переменные.
Тупо редактировать и компилировать я и в vi+sh могу, без подсветки синтаксиса обхожусь.
gdb самый что ни на есть source level. И он стандарт стандартов, практически все IDE умеют с ним общаться. Но когда требуется запускать не стандартный gdb, а лежащий по кастомному пути gdb-z80, да ещё и присоединять его к серверу через сокет, тут возникает масса подводных камней. Меня это очень удивляет, потому что нам ведь ничего выходящего за рамки требований среднестатистического эмбеддера не нужно. Но эмбеддерская IDE #1 (среди свободных, ес-но) - Eclipse - внезапно хочет самостоятельно парсить бинарник. И при этом не имеет поддержки COFF. Ну что за бред? И везде так, какие-то подводные камни.
Code::Blocks пробовал, Anjuta, кажется, тоже. А вот KDevelop попробую, спасибо, совсем о нем забыл.Цитата:
Вариант попробовать Anjuta, KDevelop, Code::Blocks
А вообще какието компиляторы си на c# есть в природе? Неужели никто не хочет старые языки поддерживать?
Не понял пассажа про "старые языки" ибо сирешетка ну нифига не новый язык...
Кодогенерация в сишарпе будет достаточно геморойным и сурово бестолковым занятием. Для вменяемой генерации нужен достаточно низкоуровневый язык и нормальный синтаксический и лексический парсер, которые на коленках не делаются ну никак. Соответственно писать что-то мало кому нужное и затрагивающее кучу времени вряд-ли кто-то соберется. Вариант поискать по студенческим работам, но я и в этом варианте сурово сомневаюсь.
Тут вы сильно заблуждаетесь в c# кодогенерация вышла на более высокий уровень и ее возможности на порядок мощнее, чем в старом си, другое дело что тут работает принцип, что компиляторы языков нового поколения пишутся на языке предыдущего поколения. Т.е. никто не смотрит на вариант обратного развития, когда на языке нового поколения пишется компилятор языка старого поколения.
Кодогенерация на c# удобна, проста и легка в отладке, в отличие от того-же си, но проблема в том, что все это нацелено на генерацию дотнет кода. Разнообразные парсеры это какраз стихия с#, тут его преимущества.
опадался ли кому-то ccz80?
http://www.telefonica.net/web2/emili...z80/ccz80.html
страница не открывается, и скачать не удается.
первая ссылка в гоогле же http://ccz80.webcindario.com/utility/ccz80Setup.zip
Не понимаю зачем нужны доступы к raw данным при компиляции, тем не менее в c# это не сложнее чем в си. Однако копиляция строится в виде поточной обработки. Насколько помню, вначале выделяются токены по правилам лексики входного языка. Которые затем потоком обрабатываются сложным конечным автоматом по таблицам мудрено выведенным из правил и семантики входного языка. В процессе обработки активно юзаются коллекции типа стек и дерево для хранения промежуточного состояния. На выходе поток операторов на псевдо языке близком по смыслу с машинным кодом, затем псевдоязык транслируется в код целевой платформы, тоже поточной обработкой. Так что raw доступы к данным тут вообще не нужны :) Тут больше нужна активная работа с коллекциями разных типов, а это лучше всего развито именно в c#.
Все что нужно для написания компилятора, в c# реализовывается максимально выразительно и оптимально. Лучшего языка для этой задачи не найти (не считая разве что всяких специализированных).
Насчет перла не согласен, я даже не слышал чтобы его ктото для написания компиляторов использовал :)
C# это и есть брат джавы, при разработке c# просто учли все проблемные места джавы, c# приобрел более выразительный синтаксис и модульность, а также много современных возможностей - дженерики, аттрибуты, экстеншены, лямбды, замыкания, анонимные классы, автосвойства и т.п., вобщем это более современная и отлаженная джава, лишенная рудиментов, но оба эти языка принадлежат одному поколению, на ступеньку выше c++.
Пока не согласен, но это не сильно и важно ИМХО.
Да никто конечноже, но парсить на нем - милое дело.
Ну сишарп не брат конечно нифига и написан совсем даже не "для улучшить жабу", а банально из-за NIH синдрома Микрософта, которая нашла в жабе от сана фатальный недостаток и поправила его в своей реализации из-за чего получила пожизненый судебный бан на распространение как своей версии, так и сановской вместе с поставками своей ОС. Да и если мне склероз не изменяет все то что ты описал есть в той-же жаве или в том-же objc. 8)
Далеко не всё.
Дженерики, аттрибуты, анонимные классы и замыкания - есть. А остального... Да в этой чертовой джаве даже делегатов нет, и любой callback - боль. C# реально самый удобный и лаконичный язык из компилируемых. Окей, из популярных компилируемых. Какие-нибудь Nemerle, D или Swift может и не хуже, но доли рынка у них нет никакой.