на попытку вызвать инструкцию sysenter транслятор говорит Код (Text): : error A2008: syntax error : sysenter почему? деректива пороцессора .686p masm 7.10.4035
а ты указал в тексте директиву набора допустимых команд? Во всяком случае можно просто сделать как здесь Код (Text): push fn ; push syscall number pop eax ; EAX = syscall number push eax ; this one makes no diff call b ; put caller address on stack b: add [esp],(offset r - offset b) ; normalize stack mov edx, esp ; EDX = stack db 0fh, 34h ; SYSENTER instruction r: add esp, (param*4) ; normalize stack http://www.securitylab.ru/analytics/241543.php
А что нужно указать чтобы можно было вызывать sysenter? хотелось бы чтобы компилировалось а не вручную байты прописывать.
не знаю, я такие новшества не использую. Советую посмотреть instruction set по процессорам, ну и директивы самого компилятора.
у меня есть документация по MASM 6.1, там максимальный набор допустимых команд указывается директивой .486р, которую я и указываю во всех своих текстах. Но sysenter более новая инструкция и мой masm 6.14 ее тоже не кушает и выдает ту же ошибку, что и у тебя. начиная с Microsoft Visual Studio 2003/.NET Framework 1.1 есть поддержка директивы .686p http://msdn.microsoft.com/en-us/library/8t163bt0(VS.71).aspx
Код (Text): sysenter macro db 0fh,34h endm ... ; ...идёт текст программы... sysenter Ну или юзать fasm - он сам знает про sysenter/syscall.