это где то проскакивало на форуме фасма. Ща найду... http://board.flatassembler.net/topic.php?t=5162&start=0 Since so many important fixes and additions have already been done in 1.65 development line, I'm going to make it soon into another milestone releases (1.66). This moves the official fasm's own debug info format outputting to be no earlier than 1.68 milestone, same goes for the x86 Mac support. Anyway, what I tried to say here (since about Mach-O and debug info plans you could read already in other threads), making 1.65.x into a new milestone soon is mainly because the development of those new features are sustained and will stay this way at least for month (if not more), and I don't want to leave all those imporant fixes to be still only "development" version for all this time в бщем, если бы не некоторые баги фасма, которые Томасу надо исправлять, а также документация., которую надо дописывать, Мас версия уже была бы. Но не всё сразу... Если интересно, то на форум фасма, и вопрос к Томасу, или письмом. Он отвечает всегда, когда есть время.
действительно, несколько push и call вместо invoke и несколько cmp/je test/jz вместо .IF/.ENDIF покажут мощь ассемблера )) макросы нужно использовать везде где это возможно и не использовать там где это не нужно, только и всего
Макросы условных переходов иногда маскируют направления переходов. Для правильной оптимизации неплохо знать куда идёт условный переход: назад, вперёд или проваливается на следующую инструкцию. Предпочитаю не использовать .IF, .ELSE и т.п.
dead_body А, ну это я читал. Думал, что есть более конкретное описание как фасм портируется в мак. Мне самому нужно кое-что портировать и наработки привалова в этом плане могут сэкономить время и деньги. Подождём-с.
Nata > "Один раз достаточьно посмотреть" Вот именно, и увидев в масмовском .IF инструкцию OR вместо положенного TEST - больше не связываться с выкрутасами этих "доморощенных оптимизаторов" ) Про левые либы, я уж вообще молчу...
Quantum Это не оптимизация, это её отсутствие. Никто не запрещает сделать проверку на 0 и вставить соответствующую инструкцию вместо cmp.
там есть оптимизация, только тогда надо писать: .if eax - оптимизированый вариант. .if eax = 0 - неоптимизированый.
Asterix invoke - это простой макрос, потомучто я точно знаю, как будет выглядеть конечный код, а запись типа .if((a>='0' && a<='9') || (a>'a' && a<'f')) можно реализовать по разному. И компилятор может выбрать далеко не тот вариант, который больше подходит по ситуации, и я не буду заранее знать сколько байт занимает готовый код.
dinoweb запись вида - макрос тоже, и посмотрев его, становиться пределно ясно, как это будет скомпилировано.(топик то о фасме)