· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Красота ассемблера - без высокоуровневых конструкций

Посл.отвђт Сообщенiе


Дата: Фев 26, 2004 18:21:34

Привет всем! Такая интересная (для меня) тема. Есть Fasm,hla,nasm(последний в меньшей степени). В MASM это- windows.inc и его invoke, .IF,.ELSE и т.д Просьба, не надо говорить про то, что ассемблер силен именно своими макроопределениями. IMHO, Писать макросы самостоятельно и пользоваться макросредствами - разные вещи. Выскажите свое мнение, расскажите кто как пишет свои программы. Аргументы "за" и "против". Интересно.


Дата: Фев 26, 2004 19:36:04

Мнение субъективно, но: Стараюсь не пользоваться макросредствами не вследствии нежелания переходить на другой уровень программирования... И не для самоутверждения - типа не запутаься в коде (тут макросредства очень привлекают...). Все гараздо проще: когда даолго-долго пишеь какой-то код и "визуально с ним свыкаешься", преставляешь его в окне ДизАсемблера и мысленно трассируешь, то при его отладке в SoftIce, например, видишь кучу инородных конструкций (конечно же не путает) - просто выглядит не привычно.


Дата: Фев 26, 2004 19:44:50

Что казается ДизАсма, то я им вообще не пользуюсь, а что до макросов- можно долго говорить про оптимизацию и скорость и память, но зачем выигрыш процессорного времени в 1 мкс, если на программу ушло на 1 день больше разработки? Да и вообще при наладке и при проверки всяких меню и прочих >= && != макрос удобен.


Дата: Фев 26, 2004 20:28:19

.IF/.ENDIF
Иногда они очень удобны и наглядны, например цикл обработки оконных сообщений.
Но иногда могут из-за этих макро возникать ситуации типа двух подряд идущих прыжков в одно и то же место :-)
В любом случае всё следует контролировать в отладчике и разруливать курьёзные ситуации.
Если ситуация не требует использования call вместо invoke то зачем же его использовать?


Дата: Фев 26, 2004 21:04:51

invoke, и макросы для автоматизированной обработки оконных сообщений. ну, еще string и прочая мелочевка. имхо, если использовать макросы на полную катушку - для чего тогда асм? повыпендриваться (пусть даже и перед собой) - ведь С гораздо удобнее :)
а с фасмом вообще ситуация начинает складываться печальная. из-за убогости (вренее, неуниверсальности) стандартных макросов, приходиться их дорабатывать, или вообще писать свои версии того же invoke. отсюда - проблемы с чтением чужого кода, да и своего, но старого.
в общем, мое мнение - когда в асме начинает сильно не хватать макросов ,есть смысл подумать о си.


Дата: Фев 27, 2004 10:26:40

Grenader

имхо, если использовать макросы на полную катушку - для чего тогда асм?

Прааальна - язык С получится! &:-P


Mafia32

Этот спор ("чистый" асм vs "грязный" асм) можно с увереностью назвать - The Great Holy War (Великая Священная Война). Моё мнение - это только вопрос предпочтений, кому-то нравятся блондинки, а кому-то брюнетки, пятые - западают на овечек. Намёк понятен? (HINT: ФЛЕЙМ)


Дата: Фев 27, 2004 13:00:06

Сила ассемблера - в контроле за каждым байтом кода. Но зачастую этого не требуется - контролировать КАЖДЫЙ байт. Понятно, что все остальное можно писать на более высоком уровне: макросы и т.п. Главное, чтобы было удобно и ты сам понимал, что будет генерироваться за каждым макросом.
Мне Асм очень нравится, но расписывать без конца подробно каждую инструкцию (когда это ненужно) просто задалбывает. Легче будет, если использовать уровень выше. Поэтому я давно уже написал свой EXE-шник, который конвертирует файл моего формата в корректный ASM-файл.
Например, последовательность:
push eax
push ecx
mov ecx,100
mov eax,[var1]
add eax,ecx
dec ecx
mov [var3],ecx
mov [var2],eax
pop ecx
pop eax
У меня превращается в:
/eax=[var1]+(/ecx-)=100 [var3]=ecx\ [var2]=eax\
Ну как, проще набить?
Кроме этого, используется масса других удобных сокращений.
Зацените...


Дата: Мар 6, 2004 10:06:39

Всегда предпочитал TASM и всегда старался обходится без макросов.


Дата: Мар 11, 2004 08:28:37

IMHO, IF/ELSE - в асме не дают никакой выгоды, кроме избавления от пары меток, зато, как пишет и Asterix, могут такую лажу сгенерить..

Но макросы могут избавить от рутины, не увеличивая компилируемый код, например когда используешь ESP вместо EBP. А то и сократить его, избавив от левого кода вроде:
pop eax
invoke foo, eax, 0
Только надо хорошо понимать что эти макросы делают.. и поэтому писать их самому.


bazed
В общем - я с вами согласен, но в деталях на первый взгляд:
push eax
mov eax,99
mov [var3],eax
inc eax
add eax,[var1]
mov [var2],eax
pop eax 



The Great Holy War
Я еще осмелюсь к этому добавить, что написание хорошего/плохого кода слабо зависит от использования/неиспользования макросов.
Даже сказал бы, что блондинки могут быть совмещены с брюнетками, для хм.. достижения лучшего результата.
Красота - она далеко не в цвете волос..


ЗЫ
А почему HLAм в списке рядом с FASM & NASM??


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043