Здравствуйте, уважаемые кодеры!!! Вот объясните мне не опытному что значит писать на чистом ассемблере или это тока использовать push и call вместо invoke или еще что то???
Ну про отладчик - это уже утрируют) Все таки мало кто сам пересчитывает адреса переменых в стеке) Чистый асм - это скорее, когда ты для компиляции только ассемблер используешь. Вообщем тебе уже ответили.
А вот [esp+4] это чистый асм или нечистый? Просто откуда компилятору знать что будет в esp... значит комилятор должен добавить внутрь кода add esp, 4h Это как бы фича компилятора и не считается чистым кодом, если ее использовать?
Treant [esp+4] - это чистый ассемблер. Читайте про способы адресации. [есх+еах*4+4] - тоже чистый ассемблер.
Для меня это значит, что не используются вышеназванный invoke, условные высокоуровневые конструкции вида if/else, while/for/until, различные макросы, без которых в большинстве случаев можно обойтись, и прочий бред. В чем смысл программировать на ассемблере, используя их? Не можешь писать на ассемблере, не используя вышеназванные конструкции - не пиши на нем вообще, переходи на ЯВУ, проще будет.
Microedition есть еще hla http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/ для очень любителей макро-полувысокоуровнево самое то. и бука к нему.
Для меня писать на "чистом ассемблере" - ПОНИМАТЬ, во что превратятся invoke, .if - .else и "прочий бред". И если то, во что они превратятся, меня устраивает на все 100% - использовать (для изящного и понятного вида исходника), а если у меня задумка заранее убрать в стек пару раз eax, чтобы использовать в нескольких апи-вызовах, или сделать if немного другой, потому что есть смысл - соответственно, не использовать ))) В любом случае, "чистый ассемблер" существует в голове и под отладчиком, а как ты это запишешь, уже не суть важно. А самый бред - это НЕ использовать invoke, но старательно писать push за push'ем перед вызовом, получая тот же самый результат. Я не фанат макросов, но - рано или поздно - штучек 5-8 ты напишешь сам. Это удобно, это облегчает читаемость исходника, это позволяет иногда сэкономить массу времени. Чем свой собственный макрос отличается от invoke? Если ты знаешь, каков будет результат на чистом ассемблере - и именно это тебе надо - используй что угодно и не заморачивайся.
Ну да, зачем писать множество push'ев, когда от использования макроса получится тоже самое, и ты можешь написать и так и так, но использование invoke гораздо короче и понятнее?
hehe тут бегинеры у них свое понимание о чистоте ассемблера вобщем FatMoon правильно говорить любовь к макросам появится после накопления опыта - сначала все хотят всЁ посчупать в живую как есть на самом деле а уж потом когда надоест запихнуть в макрос или встроенный или собственоручный
Тоже не жалуешь стиль Изелиона ?? С его легкой руки эта батва так широко используется в асме под винду смотрел мой стиль в http://www.wasm.ru/forum/viewtopic.php?id=34428 ??? ваши коментарии ?
Если так пойдет дальше, то может есть смысл (а его нет) отказаться от EQU и TEXTEQU зачем заморачиваться и запоминать непонятные, кемто придуманные WM_COMMAND,WM_CLOSE - это же просто числа. Давайте будем все писать на чистом (не макро) ассемблере, забудем что есть структуры и объединения. Т.е. не использовать: Я уверен, что будет такой "ГОЛОВНЯК", что мало не покажется. FatMoon +1 Уберите из С и С++ все хидеры и макросы со структурами, которые все обычно используют, оставте только сам компилятор. И попробуйте написать мало-мальскую прогу на чистом С. Уж проще на "не чистом" асме.