Foxter.ru

Foxter.ru (https://www.foxter.ru/index.php)
-   Программирование (https://www.foxter.ru/forumdisplay.php?f=60)
-   -   Как написать компилятор ассемблера? (https://www.foxter.ru/showthread.php?t=2650)

IMMORTAL 11.09.2006 19:29

Как написать компилятор ассемблера?
 
Всем привет !

Недавно я решил написать компилятор низкоуровневого языка. Он, по сути будет являться надстройкой над обычным ассемблером. Резница лишь в том, что процесс создания исходника программы будет заключаться не в написании строк с мнемоникой, а в выборе в меню нужной команды, заполнения окна свойств команды (ввод операндов). "Текст" программы будет напоминать древо каталогов в проводнике, где разные виды команд будут иметь свою форму. Так же хотелось бы несколько упростить процесс написания программ добавлением к командам ассемблера макрокоманд, таких как сложение двух любых (по типу и размеру) чисел. И ввести в качастве дополнительных меню команды вызова прерываний DOS, BIOS и функций Windows API .
Для этого мне потребуется:
-двоичные коды всех коанд 386 процессора;
-информация о том как работает MASM;
-Ваши замечания, предложения и ещё всё, что Вы посчитаете нужным для подобной работы.
Жду предложений и рекомендаций.

Rjkz 05.01.2007 02:57

Компилятор асемблера
 
Солнца свет!

Написанием компилятора и декомпилятора занемаюсь уже давно ,,прочёл не мало книг по Ассемблеру в которых имееться приложение с шестнацетиричнами кодами команд языка вот только "Яма" там они выдают следующее : по ихней таблице помистить в регистр EAX, или только в AX и так в любой регистр младший или старший байт(слова) регистра есть один и тот же код "0B8h" ясно такого быть не может тут и приходит вывод значит всё зависит не кода команда от её обработчика в катором описан формат в шестнацатиразрядной дос будет ешё прочитано два байта даный после этой команды ,а вот в 32 разрядные обработчики прочитают 4 байта. Вывод должен напрашиваться сам сабой,,написание как я понел компилятора своего языка дело большое сам уже несколько лет пытаюсь разабраться вот что есть программа написаня в шестнацатеричном редакторе помищает в регистры АХ число 3 в регистр ВХ число 4 складывает их и резултат остаёться в АХ ,востанавливает значение регистров и завершаеться.

Mov Ax,3 -- B8 03 00
Mov BX,4 -- BB 04 00
Add Ax,Bx -- 01 D8
ret -- C3
int 20 -- CD 20

только нужно файл на диске создать с разрешением типа .com и писать в него переведёные коды в двести пятдесят шести ритчную систему счисления""""

? Вообщем если интересно пишите найду учебник в катором я коды этих команд прочёл,,буду признателен если кто то оставит информацию о других источник описания кодов команд и их форматов. :)

IMMORTAL 05.01.2007 14:42

!!!
 
Да, да! Мне очень интересно! Если не трудно подскажите пожайлуста несколько книжек на ету тему:)
Если у кого есть исходники какого-нибудь элементарного ассемблера на популярном языке (pascal, C++, BASIC) с русскими комментариями, плз. выкладывайте!;)


Самое страшное - это когда есть цель, но нету средств её достижения (или средства не доступны:( )!!!:angel:

OperatoR 11.04.2007 15:32

у мну от всего этого аж голова болит (

Vadya corp. 11.04.2007 18:14

На дизайнерском форуме про написание компилятора ассамблера. деагноз


Часовой пояс GMT +3, время: 11:03.

Powered by vBulletin
Copyright ©2000-2024, Jelsoft Enterprises Ltd.