|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.04.2009, 11:45 | #1 |
Регистрация: 26.04.2009
Сообщений: 5
|
Несовершенство макрокоманд или как я разочаровался в MASM'е
Общеприветствую всех сюда зашедших. Я очень люблю использовать Asm для написания своих программ и не променяю его ни на какой другой язык программирования. Все было нормально, пока я программировал на нём железо и видеопамять в MS-DOS и пользовался большинством API функций в Windows. Но когда я начал практиковать 3D графику на OpenGL, я был неприятно удивлён тем, что транслятор, разработанный Мелкомягкими, при обработке директивы INVOKE не поддерживает непосредственные операнды с плавающей точкой. В то же время я заметил, что в тексте программы там и сям в большом количестве начали пестреть команды математического сопроцессора, из-за чего (ИМХО) сильно ухудшилась читабельность программы, да и писать код стало ощутимо тяжелее. Тут то я и вспомнил главы учебника для ВУЗов Юрова (кстати, опять же ИМХО, дрянь-книга... куда только смотрело МинОбра РФ, когда допускало её в качестве учебного пособия для студентов...) посвящённые макрокомандам, которые я в своё время лишь пробежал глазами. Макросредства MASM'а я изучил, однако всё равно остался недоволен. Мне хотелось использовать составленные мной средства языков высокого уровня, не покидая при этом возможности Assembler'а.
С++ для этого не подошёл мне по 3-м причинам: 1) Его средства (опять же ИМХО) недостаточно эффективно реализованы (я видел на какие команды Asm'а раскладывается его исходный код); 2) Всякий раз, когда в тексте потребуется вставить Asm-команду, нужно писать "_asm" и открывать, а потом ещё и закрывать фигурную скобку; 3) Возможности Assembler'a в С++ очень сильно урезаны. Вот тогда я и задумался: а почему бы мне не написать собственный транслятор, а за одно и линкер тоже? Поэтому прошу всех, кто сейчас читает этот текст, дать ссылки на материалы по следующим темам: ● структура *.obj *.com и *.exe файлов для платформ MS-DOS, Win16, Win32 и Win64; ● структура и коды машинных команд (в том числе недокументированных). Желательно, конечно, чтобы материалы были на русском, но ссылки на англоязычные материалы мне также очень помогут. Если что-то конкретное есть в MSDN, просьба также дать ссылки, которые можно (для тех, кто об этом не знает) скопировать из combo box'а, который находится вверху просматриваемой страницы. Заранее спасибо! |
26.04.2009, 13:31 | #2 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
FASM тоже не понравился? Макроязык там лучше (все invoke, if, while, import являются макросами, можно даже переделать, если надо).
http://www.sandpile.org/ia32/ http://wasm.ru/article.php?article=green2red02 |
26.04.2009, 18:26 | #3 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
26.04.2009, 18:48 | #4 | |||
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
во-вторых, как же ты без математического сопроцессора будешь работать с дробными числами? Цитата:
Цитата:
|
|||
26.04.2009, 21:42 | #5 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Вот нарыл в архивах у себя генератор констант single float (может
сгодится) 1. Задаёте стартовое значение. 2. Задаёте финишное значение (естественно больше стартового) 3. Задаёте шаг генерации констант 4. Жмёте кнопку. 5. Получается файл float_const.inc 6. Цепляем файл float_const.inc к своей программе и всё, нам доступны константы single float из указанного диапазона с указанным адресом. Каждая константа имеет уникальное имя: К примеру: 1. C_FLOAT32_9x95 ==-9.95 2. C_FLOAT322x24 == 2.24 3. C_FLOAT320==0.00 4. C_FLOAT320x01==0.01
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 26.04.2009 в 22:08. |
03.05.2009, 15:22 | #6 | |||
Регистрация: 26.04.2009
Сообщений: 5
|
Прошу извинить меня за столь длинную паузу: прижали жизненные обстоятельства.
Цитата:
Цитата:
Цитата:
Скажу честно: FASM'ом не пользовался. Ответь, пожалуйста, на такой вопрос: обладает ли FASM возможностью полного анализа написанного мной кода с помощью выполнения инструкций Assembler'а или каким-либо другим способом? Если не обладает, прошу дать ссылки по интересующим меня темам. Последний раз редактировалось rpy3uH; 04.05.2009 в 11:05. |
|||
03.05.2009, 23:02 | #7 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
|
|
04.05.2009, 00:06 | #8 | |
Регистрация: 26.04.2009
Сообщений: 5
|
Цитата:
Код:
Код:
|
|
04.05.2009, 11:09 | #10 | ||
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SSH или как подключится | Droniwe | Работа с сетью в Delphi | 4 | 30.10.2008 17:27 |
Daemon или как заключить сделку с демоном | Dj_smart | PHP | 13 | 04.10.2008 00:07 |
Закачка файла или как не укачатся | Dj_smart | Софт | 8 | 02.10.2008 09:39 |
Как проверить запущено приложение или нет? | kiber0net0 | Общие вопросы Delphi | 2 | 18.09.2008 19:48 |
как узнать string или Real | Влажимир | Общие вопросы Delphi | 2 | 11.04.2008 17:06 |