eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: SaLvaTruCha, 3ton
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Оффтоп —› Макроподстановки на асме
Посл.ответ Сообщение

Ранг: 42.7 (посетитель)
Статус: Участник

Создано: 18 января 2015 04:39 New!
Цитата · Личное сообщение · #1

Во многих ЯП есть возможность формировать части текста программы динамически.
Т.е. можно динамически сформировать, применительно к асму, строку типа "mov eax,ebx", динамически же скомпилять (для чего, понятно, надо таскать с собой минимальный компилятор) и вполнить соответствующий кодес.
Не знаю, есть ли реализация сабжа для асма. Да и, главное, нужно ли это?
По сути, как я понимаю, в данном случае речь идет о некой разновидности ВМ (на входе текст - на выходе нативный код)

Добавлено спустя 4 часа 21 минуту
На вид анализ и в статике и в динамике будет непрост

Ранг: 382.3 (мудрец)
Статус: Участник

Создано: 7 февраля 2015 07:33 · Поправил: dosprog New!
Цитата · Личное сообщение · #2

--> Тутъ <--

В современном masm'е всё построено на макросах.
Начиная с самого часто используемого <invoke>



Ранг: 281.6 (наставник)
Статус: Участник

Создано: 7 февраля 2015 13:01 · Поправил: DenCoder New!
Цитата · Личное сообщение · #3

Вопрос непонятно поставлен. По сабжу одно, а в вопросе - другое.

Динамически - компиляция по требованию во время выполнения программы. Программы на C#, на двиге v8, например, такое делают. Компилируются только те части кода, в которых возникла надобность исполнить. Но это прозрачно для разработчика.

Макроподстановки - написание шаблонов кода. Фактический код подставляется вместо макросов на первом проходе компиляции всей программы, а затем уже компилируется весь полученный код.

Ранг: 382.3 (мудрец)
Статус: Участник

Создано: 8 февраля 2015 18:17 · Поправил: dosprog New!
Цитата · Личное сообщение · #4

Позволю себе добавить, что макроподстановки хороши вмеру.
Увлёкшись, намертво привязываешься к реализации транслятора.

Вообще-то, ещё в TASM'e была директива <IF0> - условие срабатывало только при первом проходе.
Можно организовать разворот макросов при желаемом проходе, если завести счётчик.

Работает это всё таким образом, что транслятор сравнивает результат трансляции при каждом проходе и если на очередном проходе выявлено раскрытие макроса или двоичный результат не совпадает с результатом предыдущего прохода, тогда принимается решение о необходимости ещё одного прохода.
В идеале программы надо составлять так, чтобы обходиться минимальным числом проходов (1 или 2).
В TASM'е при использовании директивы <IF0> и др. чаще всего выдаётся надоедливое предупреждение,
так как такие вещи считаются "костылями".

Моё впечатление, что макропроцессирование это довольно глючная сфера и сильно зависящая от используемого транслятора. На любителя.

DenCoder пишет:
Вопрос непонятно поставлен. По сабжу одно, а в вопросе - другое.


Да, тут какой-то подвох..

 eXeL@B —› Оффтоп —› Макроподстановки на асме

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0


Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS