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

 WASM Phorum —› WASM.ASSEMBLER —› Вопросы по FASM

. 1 . 2 . >>

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


Дата: Апр 3, 2004 20:30:40

1) Как в фасме (и возможно ли такое) определить свой stub.
2) Как в фасме (и возможно ли такое:) определить расширение генерируемого файла.
3) Как консольной версии фасма указать %include%. - Не конкретный файл, а как указать деректорию в которой лежат инклуды (в GUI версии это пишется в ini-файле).
4) Где можно на русском языке почитать о макросах фасма (была попытка на wasm.ru написать статью о макросах, но на мой взгляд она провалилась, от разбора макросов ушли к банальному "hello word"). Причем интересует не просто упоминание о макросах, а их конкретное использование: спасибо S_T_A_S_'у - показал как можно рекурсивно вызывать макросы и показал работу fix.


Дата: Апр 3, 2004 20:59:12 · Поправил: S_T_A_S_

1. format PE GUI 4.0 at 400000h on "mystub.exe"

2. fasm source.asm output.anything
(вообще его даже как конвертер CP866->КОИ8 можно юзать, создать макрос и файл для табличной конверсии)

3. Если мастдай, то в autoexec.bat написать SET (как и PATH)
Если в NT - мой комп.->свойства системы->дополнительно->пременные среды->системные переменные-> создать Fasminc

начиная с версии 1.52 поддреживает перечень перечень путей разделенных двоеточием
(релиз будет на днях)

4. На английском очень подробного описания нет. Есть только доки и форум.
Так что остается только ждать.. пока кто-нибудь не напишит ;-)


Дата: Апр 3, 2004 21:12:55

2S_T_A_S_:
1. format PE GUI 4.0 at 400000h on "mystub.exe"
mystub.exe или mystub.com?

2. fasm source.asm output.anything
это для консольной версии, а вот для GUI как? я имел ввиду может деректива какая есть, ведь format - может изменять рассширение, думал тут надо копать.

начиная с версии 1.52 поддреживает перечень перечень путей разделенных двоеточием
поясни

(релиз будет на днях)
ждемссс

4. Где бы на английском найти ?
:)


Дата: Апр 3, 2004 21:49:21

1. stub - это MZ format exe файл
(как его делать см. архив assembker.ru на этом сайте)

2. Для GUI нельзя afaik, Да и смысл?
format меняет формат, а расширение уже от него зависит

начиная с версии 1.52 поддреживает перечень перечень путей разделенных двоеточием
т.е. можно писать путь не к одному каталогу как раньше, а к нескольким, разделять точкой с запятой (четот я напутал). ФАСМ будет поочереди их просматривать


Дата: Апр 4, 2004 15:31:30

ждемссс
Уже есть


Дата: Апр 7, 2004 17:01:49
Правка

S_T_A_S_
Ага, если бы всё было так замечательно…

1. Раньше можно было написать
... on '%fasminc%\..\bin\mystub.exe'
сейчас — нет!
2. Было объявлено, что можно не писать '%fasminc% - но это только для директивы include?
3. создать Fasminc Сейчас зачем-то смотрит не %FASMINC%, а %INCLUDE%

4. Почему не сделать в FASM'e встроенные макроконстанты? Типа FASM_VERSION, а то разные версии несовместимы теперь!


Дата: Апр 7, 2004 22:22:26

IceStudent

Сейчас зачем-то смотрит не %FASMINC%, а %INCLUDE%
Хм пропустил.. Я все равно не юзаю никаких переменных - все пути относительные.

Типа FASM_VERSION
Можно проверять PE заголовок использую "load" - FASM заполняет LINKER VERSION. Только надо ли это ?


Дата: Сен 27, 2004 12:25:47

Туплю наверное , фасм так не может посчитать ? Пишет "invalid use of symbol" . ("@@: mov eax" - просто для примера)

@@: mov eax,80000h-$


Дата: Сен 27, 2004 15:44:23

Если так:
mov eax, 80000h
sub eax, $


Дата: Сен 27, 2004 15:54:07

Кстати, почему именно 80000h-$ ??
Вот так будет вполне нормально:
mov eax, $-80000h


А в первом случае у тебя скорее всего получается отрицательное число


Дата: Сен 27, 2004 16:02:44

Так я лучше ручками посчитаю :)
$ - это же известно на момент компиляции , почему $-1 компилит , а 1-$ нет ?


Дата: Сен 27, 2004 16:39:30

Тут всё немного сложнее, чем может показаться.
Адрес загрузки PE файла (теоретически) не известен, поэтому сложно вычислить абсолютное значение метки ( не обязательно $).

В случае с mov eax,80000h + $ компиляция проходит, в надежде, что будет создана секция с релоками директивой data fixups.
Возможно, я недопонимаю что-то про релокацию, но IMHO корректировку "отрицательного ареса" метки просто невозможно произвести при загрузке PE.

С EXE'щниками всё просто - адрес загрузки можно сделать фиксированный, и вычислить значение метки во время компиляции:
IMAGE_BASE = 400000h

format pe at IMAGE_BASE

@@:     mov eax,80000h-(IMAGE_BASE+RVA $) 


ЗЫ
В MASM "минус" работает на EXE'щниках - это вероятно заслуга линкера.


Дата: Сен 27, 2004 18:49:44

А у меня масм не компилит на exe , говорит "operand must be relocatable" .


Дата: Сен 28, 2004 11:12:04

Да, у меня он тоже так "компилит" (v7). Дело в том, что я вроде бы видел (на board.flatassembler.net ?) кто-то задавал подобный вопрос и утверждал, что именно масм такое выражение переваривает. Возможно я что-то и спутал, или может быть речь шла про старый masm (v6), а теперь этот "глюк испраили". К сожалению щас найти не могу (инет совсем плохой стал :(), попозже постараюсь. А старого масма у меня уже почему-то (?) нет.


Дата: Сен 28, 2004 11:38:18

Не надо искать , это не суть важно и старый (6.12) тоже не компилит . Я просто догнать не мог причём база образа , ведь при простом использовании метки компилер её знает и компилит (push $ получиться push 401000) , а в случае push 1-$ (push FFBFF001) почему-то нужны релоки .

. 1 . 2 . >>


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