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

 WASM Phorum —› WASM.ASSEMBLER —› от чего зависит размер экзешника?

<< . 1 . 2 . 3 . >>

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


Дата: Июн 20, 2004 12:08:33

Flasher

Стаб - это программа ДОС. В виндосе он никогда не запускается по определению.
Если хотите посмотреть, что он делает находясь в виндосе, меняйте первые 2 байта местами.


n0p

Что-то мне подсказывает, что я уже видел точно такой же спор с Asterix,
и даже кажется, что он оказался тогда прав ;-)


Дата: Июн 20, 2004 16:36:48 · Поправил: Asterix

> Что-то мне подсказывает, что я уже видел точно такой же спор с Asterix,
и даже кажется, что он оказался тогда прав ;-)


Конечно :-), файл без импорта запустится только под 98 и XP и обломается в 2k, проверено тыщу раз.


Дата: Июн 21, 2004 11:12:17

jekyll
Как алигн для секций делается?

macro .code { section '.text' code readable executable align 1 }

:)


Дата: Июн 21, 2004 15:36:50

Uri
section '.text' code readable writeable executable align 1
error: extra characters on line.


Дата: Июн 21, 2004 15:53:28

jekyll
error: extra characters on line.

fasm ver 1.52
format MS COFF


Дата: Июн 21, 2004 18:32:02

Uri
а для
format PE
нельзя?


Дата: Июн 22, 2004 15:12:20 · Поправил: Uri

jekyll
format PE
Пробовал - похоже что нельзя.

Спроcи Привалова...


Дата: Июн 22, 2004 15:15:17

Согласно доке align работает только с coff.


Дата: Июн 22, 2004 15:26:29

S_T_A_S_
Согласно доке align работает только с coff.
И правильно. Это единственный правильный формат (c) BG


Дата: Июн 22, 2004 16:42:49 · Поправил: jekyll

Uri
Хорошо, спрошу. Вообще бы неплохо, чтобы эта фича была в компиляторе.


Дата: Июн 22, 2004 18:19:33

[ Uri : И правильно. Это единственный правильный формат (c) BG ]

Ну, это может для других ассемблеров они и единственный, а FASM и безо всяких линкеров рулит и вадаёт нормальные PE :).
И разве coff изначально мелкомягкий формат :-?


jekyll
Не пойму, зачем в FORMAT PE нужен align - можно ж одной секцией обойтись :).


Дата: Июн 22, 2004 18:31:56

S_T_A_S_
Ну, это может для других ассемблеров они и единственный, а FASM и безо всяких линкеров рулит и вадаёт нормальные PE :).
Знаем, пробовали, пишем...

И разве coff изначально мелкомягкий формат :-?

И да и нет. не будем об этом, так как история эта длинная и копий тут поломано до нас немало...

Не пойму, зачем в FORMAT PE нужен align - можно ж одной секцией обойтись :)
Можно конечно и в хексах писать. Но вот у меня один типичный фасмовый проект состоит из 50 (пятидесяти) модулей. Как тут обходится одной секцией? И как тут без кофа?

Слушай, что-то мне кажется что мы в офтом выпадаем. Замнем, а?
Если есть желание по фасму поговорить - можно в приват, асей и на флатасме_нет...


Дата: Июн 22, 2004 19:11:47

Uri

Какой же у нас оффтоп?
Это наоборот - топик изначально оффтоповый, так как всё что написано выше уже было на форуме, и не раз :).

По поводу секций и coff вопрос imho хороший.
Я так понимаю, что в каждом из 50ти модулей содержится несколько секций - например 2.
Если это всё компилить в PE, то FASM создаст кучу чередующихся секций (была у мя такая проблема).
Поэтому, наверно, и применяется COFF + линкер объединяющий одинаковые секции?
Если так, то это можно обойти, компилируя сразу в PE -
в FRESH, например так делается - макросы iglobal/uglobal.
Т.е. на основе 50ти модулей будет создана одна секция кода и одна секция данных - без линкера.
Можно таким же образом и в одну всё запихать - но это уже дело вкуса.

Кстати, про хексы - многое из того, что делает линкер можно возложить на макросы - именно это я имел ввиду, говоря "FASM рулит" ;-)
Хотя, их сложность иногда получается излишней :(


Дата: Июн 22, 2004 19:19:01

S_T_A_S_
По поводу секций и coff
И да и нет. Вообще я перепробовал кучу методов, но остановился все-таки на coff, как на самом малокровном.
Ведь часть вопроса на том, что-бы не перекомпилировывать весь код, а только то что надо, что-бы выкидывать то что не надо (кстати, тут фасм попадает в небо с блоками if a=b else a=c endif), в общем - менингита много... ладно, ну его.

именно это я имел ввиду, говоря "FASM рулит"
Да, FASM действительно рулит! Такой системы макросов нет нигде!


Дата: Июн 22, 2004 20:04:06

[ Uri : часть вопроса на том, что-бы не перекомпилировывать весь код, а только то что надо ]

Вроде бы пока со скоростью компиляции у FASM проблем нет.
Хотя да, как использовать либы - это уже предпочтения. Особенно если что-то откомпилено не FASM, то никуда не денешся :(


> фасм попадает в небо с блоками if a=b else a=c endif)
Если такой код:
    if foo
    	a=b
    else
    	a=c
    end if
то никаких проблем не будет, так как все операторы обрабатываются во время ассемблирования.

Вот это:
    if foo
    	a equ b
    else
    	a equ c
    end if
однозначно определяет a equ c, так как equ обрабатываются препроцессором.
Но это imho не большая проблема - другие решения можно найти, просто надо выкинуть из памяти MASM :)

<< . 1 . 2 . 3 . >>


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