вставка ассемблерного кода х64

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

  1. newb

    newb New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2008
    Сообщения:
    39
    имеется вс2008. как вставить ассемблерный код для мл64.
    п.с. на __asm {...} ругается, может нужно что-нить поллрубить ?...
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Вставки не поддерживаются, делай отдельный .asm файл.
     
  3. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    Никак, как уже сказали выше. Если хочешь правило (для сборки асм файлов в студии) для ml64, бери правило для ml (Custom Build Rule) и модифицируй для ml64.
     
  4. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    newb
    Joes
    reverser

    :)

    Код (Text):
    1. unsigned char code[] = {
    2. 0xc3}
    3.  
    4. typedef VOID (NTAPI *RUNRAW)(VOID);
    5.  
    6. NTSTATUS DriverEntry (PDRIVER_OBJECT  pDriverObject,
    7.                       PUNICODE_STRING pusRegistryPath)
    8. {
    9.  
    10.     NTSTATUS Status;
    11.  
    12.     RUNRAW RunRaw = NULL;
    13.  
    14.     RunRaw = (RUNRAW)code;
    15.     RunRaw();
    16. ...
    17. }
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    PROFi
    Это не совсем эквивалент inline ассемблеру. Нет возможности вставить код на ассемблере непосредственно в С/С++ (без вызова функции - call)
     
  6. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    PROFi: Я таким же образом могу кодогенерилку написать (а-ля JIT), но нафиг надо? :)

    Выглядит так:
    Stream a;
    a << MOV(rRAX, rImm64(100));
    a << RET();
    a();

    Но это ж тоже не инлайн ассембли, правильно? :)
     
  7. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    "Кодогенирилка" уже есть: написал модуль на ассемблере и вызывай себе функции. Но есть ситуации когда просто необходимо вставить в сишный код одну две инструкции на асме.
     
  8. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Joes
    katrus

    Ну это собствено к замечанию "о невозможности" :) Это действительно
    просто я к тому, что ничего невозможного не бывает.