_BC_ Есть давно макрос для этих целей. Есть директива virtual. PS when u assume, u add an ass to u and me =)
S_T_A_S_ А эта директива поможет мне при смешивании 16- и 32-битного кода и многочисленных сменах сегментных регистров? Такая классная директива была assume... х/з чем она не понравилась... еще надо org выкинуть для полного счастья. :_(
Privalov, а действительно, будет ли директива assume? Хотел еще обсудить с тобой несколько инструкций. А именно: SLDT/STR/SMSW и LLDT/LTR/LMSW/VERR/VERW, вернее их варианты с 32-х разрядным регистром. Для первой группы все понятно, в мануалах Intel указана дополнительная возможность использования 32-х битных регистров, в рзультате чего их старшая часть обнуляется. Для второй группы в принципе, нет разницы, с регистрами какой разрядности мы работаем. Т.е. в любом случае будет использоваться лишь младшая часть 32-х битного регистра. Поэтому, может быть, для оптимизации в FASM'e не генерировать префикс 66h перед инструкциями второй группы при использовании r16 в 32-битном режиме и наоборот, при использовании r32 в 16-ти битном? Ведь результат от этого не изменится.
я так думаю, что если отход от мануала интела оправдан и улучшает читабельность, то так нужно и делать, просто указывать это отдельно, а не в теле описания инструкций, тк многие, полагая что там написано тоже самое, что и в мануалах, могут этот раздел не читать.
Вот такой код: include 'win32axp.inc' .data .code start: invoke MessageBox,0,"It BUG ???","FASM",MB_OK invoke ExitProcess,0 .end start не исполняется под WIN XP SP2, Ollydbg его не может загрузить, LordPE, PEtools показывают что .data присутствует. Если в этой секции обьявить данные все ОК. А под WIN 98 работает и спустой секцией. Вопрос это ошибка FASMa или особенности XP?
Ошибка в макросе stdcall при проверке на количество входных параметров include 'win32axp.inc' .code start: stdcall [MessageBox],HWND_DESKTOP,"Hi! I'm the example program!","Win32 Assembly",MB_OK stdcall [ExitProcess],0 .end start
Вопрос такого характера: Мне надо было создать TREEVIEW. В сообщении WM_CREATE создаю его, но столкнулся с маленькой проблемой. В подключаемом файле 'apia\comctl32.inc' есть строчки с классами: ; Common control window classes []
Это не C. Естественно надо заводить переменную в секции данных. Пример: Код (Text): hello_msg equ "Hello, world" caption equ "Hello" invoke MessageBox,0,hello_msg,caption,0 ; Препроцессор превращает в: push 0 push "Hello" push "Hello, world" push 0 call MessageBox И fasm будет ругаться на push "Hello"
R_NEW Тогда почему не работает при: szTreeView equ TREEVIEW_CLASS,0 пишет Instruction: pushd 'SysTreeView32' Source: My.ASM[xx] и proc32.inc[17]
Вот ещё привожу пример. Можно как говорится убедиться самим на практике. Попробуйте сначало скомпилировать текст как есть на FASMW 1.64, а потом поменять в секции данных на: [] <font color="red]не, ну не понимают люди по-хорошему!</font><!--color-->
SSERG Хватит постить в эту тему глупые вопросы. Тебе уже ответили: Хотя, это могут сделать за тебя макросы.
Что-то странное с этим resdata в версии 1.64... Пытаюсь скомпилить пример из своего тьюта по ОГЛь, он коверкает модельку (пример тут)
Блин, туплю... Эти fileres вообще не нужны были (я еще думал: "какого, надо писать +16 в смещении текстур"). Исправил свой тьют