Понадобилось написать макрос, в котором используются инструкции ассемблера
#define CALC1 \
__asm\
{\
mov eax, dword ptr [begin2] \
lea edx, beginlbl \
}\
При компиляции ругается на lea мол зарезервированное слово, я так понимаю препроцессор переводит конструкцию в одну строку. В таком случае как разделить команды?
Здравствуйте, zheka2, Вы писали:
Z>При компиляции ругается на lea мол зарезервированное слово, я так понимаю препроцессор переводит конструкцию в одну строку. В таком случае как разделить команды?
оператор "__asm" сам по себе является разделителем команд.
#define CALC1 \
__asm mov eax, dword ptr [begin2] \
__asm lea edx, beginlbl
забавно, что в msdn написано, что в блоке __asm команды можно опционально разделять ";", однако встроенный ассемблер всё что после ";" воспринимает как комментарий. микрософт такой микрософт
Здравствуйте, zheka2, Вы писали:
Z>Понадобилось написать макрос, в котором используются инструкции ассемблера
Z>Z>#define CALC1 \
Z> __asm\
Z> {\
Z> mov eax, dword ptr [begin2] \
Z> lea edx, beginlbl \
Z> }\
Z>
Z>При компиляции ругается на lea мол зарезервированное слово, я так понимаю препроцессор переводит конструкцию в одну строку. В таком случае как разделить команды?
а я все же предлгаю сделать инлайн функцию, а не макросом решать
Здравствуйте, ilnar, Вы писали:
I>Здравствуйте, zheka2, Вы писали:
Z>>Понадобилось написать макрос, в котором используются инструкции ассемблера
Z>>Z>>#define CALC1 \
Z>> __asm\
Z>> {\
Z>> mov eax, dword ptr [begin2] \
Z>> lea edx, beginlbl \
Z>> }\
Z>>
Z>>При компиляции ругается на lea мол зарезервированное слово, я так понимаю препроцессор переводит конструкцию в одну строку. В таком случае как разделить команды?
I>а я все же предлгаю сделать инлайн функцию, а не макросом решать
а есть возможность передать адрес метки в inline функцию?
Здравствуйте, zheka2, Вы писали:
I>>а я все же предлгаю сделать инлайн функцию, а не макросом решать
Z>а есть возможность передать адрес метки в inline функцию?
Нет, к сожалению. Если бы это было возможно, то получение адресов начала и конца тела функции, о котором речь шла
здесьАвтор: rg45
Дата: 21.04.11
, можно было бы не встраивать внутрь целевой функции, а реализовать отдельно.
Спасибо. Тогда посижу на макросе)
Здравствуйте, zheka2, Вы писали:
Z>Здравствуйте, ilnar, Вы писали:
I>>Здравствуйте, zheka2, Вы писали:
Z>>>Понадобилось написать макрос, в котором используются инструкции ассемблера
Z>>>Z>>>#define CALC1 \
Z>>> __asm\
Z>>> {\
Z>>> mov eax, dword ptr [begin2] \
Z>>> lea edx, beginlbl \
Z>>> }\
Z>>>
Z>>>При компиляции ругается на lea мол зарезервированное слово, я так понимаю препроцессор переводит конструкцию в одну строку. В таком случае как разделить команды?
I>>а я все же предлгаю сделать инлайн функцию, а не макросом решать
Z>а есть возможность передать адрес метки в inline функцию?
нет. в код asm не вдавался, когда предложил inline