· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Встроенный ассемблер и #define в VC

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


Дата: Авг 19, 2003 21:16:06

Столкнулся со странным глюком (?) в VC .NET
При использовании в параметризованном #define встроенного ассемблера (__asm), перестают изменяться параметры, при чем только в том случае, если параметр идет после ассемблерной вставки.

Пример:

#define TEST1(V) V = 5; __asm nop;
#define TEST2(V) __asm nop; V = 5;

void f()
{
...
DWORD dwVal = 0;
TEST1(dwVal); // после исполнения dwVal = 5, как и должно быть
TEST2(dwVal); // после исполнения dwVal = 0 !!!
...
}

в чем же дело?


Дата: Авг 19, 2003 22:12:52 · Поправил: volodya

Ну и гляди, что ты получил в конце:

int main(void)
{

DWORD dwVal = 0;
dwVal = 5; __asm nop;;
__asm nop; dwVal = 5;;

return 0;
}

Убери ";" после define. И вообще - для асма ";" - это комментарий!
Да, на глюки в компиляторе и линкере надо грешить в последнюю очередь. Действительно в последнюю. Большинство глюков допускаем мы сами.


Дата: Авг 19, 2003 22:44:35

volodya

Действительно VC тоже принимает ";" как начало комментария... Честно сказать, упустил из виду
Спасибо :)


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