Rohan Это очень хорошее и функциональное IDE для написания приложений на ассемблере. С пакетом распространяются настройки для 5 разных компиляторов. Как что-то найти в нём? Да просто посмотрите и разберитесь во всех командах его меню. На сайте RadASM'a лежит также довольно неплохая справка.
Я понимаю что нужно просто полазить по менюнкам, но мне стремно менять там все что мне кажется не так! Всеж это не в Винде пару галочек поставить. Если несложно то просто назовите мне раздел где смотреть.
Asterix А эта переменная разве объявлена в стеке? Похоже на объявление в секции кода - а это ухудшает производительность. Хорошо бы иметь в FASM простую поддержку на уровне компилятора: Код (Text): proc foo vars { .object WNDCLASS } ... mov .object.pfnWndProc, eax ... return
Пример Asterix использует стековые переменные, реальзуется всё это макросами. IMHO если же будет поддержка на уровне компилятора, то возможности ухудьшатся - потеряется гибкость.. В MASM например нельзя из-за этого по-нормальному реализовать ESP-based stackframes :-\
S_T_A_S_ В MASM например нельзя из-за этого по-нормальному реализовать ESP-based stackframes Хотя это и не выглядит так элегантно, как в fasm'е, но реализовать можно и в MASM'e.
AsmGuru62 > А эта переменная разве объявлена в стеке? Да, всё что между proc и enter стековые переменные ЗЫ: Как там дела с IDE? Уже хотелось бы затестить.
Johnikum Дык я не спорю, сам пытался. Но в MASM это очень криво получается Все его HLL прибомбасы (proc, invoke) при этом только мешают. Ключевой момент - в FASM можно сделать макросы push и pop, которые берут на себя рутину вычислений значения ESP. А в MASM - только ручками. Тогда зачем там PROC, LOCAL и т.п.
А оно сильно надо? Какие при этом преимущества? Лишний регистр освобождается, что еще? Я лично этим этим года полтора назад воспользовался один раз из-за лени, когда над AES работал. Если уже так хочется извращаться, то пишем что-то типа blabla equ [esp+4*5]
Иногда - надо, иногда можно и обойтись - тут от прграммы больше зависит. Регистр очень часто вовсе не лишний, скорость выше, иногда даже код более компактный (как это ни странно на первый взгляд - не стОит забывать, что winAPI не изменяет EBP) Но дело-то не в этом - использование BP - это необходимость времён ДОСа и 286 процессора, сейчас уже на дворе 2005 год почти А blabla equ [esp+4*5] - это уж точно изврат, так ошибок не оберёшся, особенно когда добавляешь новые команды и т.п. Это ладно, если нужно делать mov eax,[blabla] а если push [blabla] или pop [blabla] ? В том-то вся прелесть FASM, что сделав один раз макросы (или взять уже готовые), можно потом просто писать программы не напрягаясь считая параметры и локальные переменные. А извращаться тогда уж так: mov esi,esp lodsd xchg ecx,eax lodsd xchg edx,eax
masquer > Тут фишка в том, что push и pop меняют значения esp, причём важно, до или после выполнения команды эти изменения делаются. В общем-то, решение элементарно, но все макросы, которые я видел были не корректны. А правильно так: Код (Text): macro push arg { push arg __STACK__=__STACK__-4 } macro pop arg { __STACK__=__STACK__+4 pop arg } > Ну вот, началась агитация Я имел ввиду то, что 16 битные x86 просто не имели возможности адресовать память через SP, сейчас же с этим проблем нет. но микрософт вместо новых фич добавляет в MASM новые баги.
S_T_A_S_ Ты хочешь сказать что при применении макросов можно полностью расслабиться, косяк невозможен?