sysenter

Тема в разделе "WASM.BEGINNERS", создана пользователем 2FED, 8 июл 2008.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    на попытку вызвать инструкцию sysenter транслятор говорит
    Код (Text):
    1.  : error A2008: syntax error : sysenter
    почему?

    деректива пороцессора .686p

    masm 7.10.4035
     
  2. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    а ты указал в тексте директиву набора допустимых команд?
    Во всяком случае можно просто сделать как здесь
    Код (Text):
    1.      push   fn                               ; push syscall number
    2.      pop    eax                              ; EAX = syscall number
    3.      push   eax                              ; this one makes no diff
    4.      call   b                                ; put caller address on stack
    5. b:   add    [esp],(offset r - offset b)      ; normalize stack
    6.      mov    edx, esp                         ; EDX = stack
    7.      db     0fh, 34h                         ; SYSENTER instruction
    8. r:   add    esp, (param*4)                   ; normalize stack
    http://www.securitylab.ru/analytics/241543.php
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А что нужно указать чтобы можно было вызывать sysenter? хотелось бы чтобы компилировалось а не вручную байты прописывать.
     
  4. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    не знаю, я такие новшества не использую. Советую посмотреть instruction set по процессорам, ну и директивы самого компилятора.
     
  5. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    у меня есть документация по 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
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Код (Text):
    1. sysenter macro
    2. db 0fh,34h
    3. endm
    4. ...
    5. ; ...идёт текст программы...
    6. sysenter
    Ну или юзать fasm - он сам знает про sysenter/syscall.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    2FED
    Следует думать над механизмом вызова, а не над тем как инструкцию заюзать :lol:
     
  8. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Мне именно интересно почему не компилируется, может MASM её воабще не поддерживает