Задать элемена массива для дизассемблера при байте 0x90. NOP,PAUSE(F3)

Тема в разделе "WASM.ZEN", создана пользователем EvilsInterrupt, 22 авг 2006.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    сложно дать название темы, потому они не такое описательное.

    поясню, есть машинные команды и если перед байтом 0x90 стоит F3 то это команда "pause",
    если ничего не стоит то это "nop". Потому я ввожу структуру:
    Код (Text):
    1. typedef struct _MEMO {
    2.     LPVOID  Normal; // нет префиксов
    3.     LPVOID  Pfx66;  // с префиксом 66
    4.     LPVOID  PfxF2;  // с префиксом F2
    5.     LPVOID  PfxF3;  // с префиксом F3
    6. }MEMO,*PMEMO;
    для распознания опкодов задал основную стуктуру:
    Код (Text):
    1. typedef struct _HOPCODE {
    2.     LPVOID  Addr;
    3.     BYTE        Options;
    4. } HOPCODE,*POPCODE;
    Хочу прямо в тексте задания массива структур HOPCODE задать первым элементом указатель на
    MEMO. Но такая запись:
    /* 90 */ { { "nop",0,"pause",0 },SameOp },

    ошибочна с текстом:
    error C2078: too many initializers

    прошу помочь записать именно в тексте задания массива!
     
  2. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Код (Text):
    1. typedef struct _HOPCODE {
    2.     MEMO     Addr;
    3.     BYTE      Options;
    4. } HOPCODE,*POPCODE;
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Ustus
    У меня уже идет:
    Код (Text):
    1. HOPCODE NormalOpcode[] = {
    2.     /* 00 */ { "add",1 },
    3.     /* 01 */ { "add",1 },
    4.     /* 02 */ { "add",1 },
    5.     /* 03 */ { "add",1 },
    6.     /* 04 */ { "add",2 },
    7.     /* 05 */ { "add",2 },
    и просто так MEMO не поставишь!
     
  4. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    тогда только отдельно:
    Код (Text):
    1. MEMO NopOpcode =
    2.     {"nop",0,"pause",0 };
    3.  
    4. HOPCODE    NormalOpcode[] = {
    5. // ....
    6. /* 90 */ { &NopOpcode ,SameOp },
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Ustus
    Я именно так и решил! :)