Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Long GetEnumSize(long enum_id);

Функция возвращает число членов перечисления, заданного идентификатором. Обратите внимание, именно число элементов, а не занимаемый ими размер, который вообще вычислить невозможно, поскольку члены перечисления не имеют типа.

Пример:

FFFFFFFF ; enum enum_1

FFFFFFFF enum_1_0 = 1

FFFFFFFF enum_1_2 = 2

FFFFFFFF

Message("0x%X \n",

GetEnumSize(

GetEnum("enum_1")

)

);

0x2

Если перечисление пусто, то функция возвращает ноль, но то же значение возвращается, если указать неверный идентификатор, поэтому возникает неоднозначная ситуация – либо перечисление отсутствует (было удалено?) либо же попросту пусто.

Пример:

FFFFFFFF ; enum enum_2

Message("0x%X \n",

GetEnumSize(

GetEnum("enum_2")

)

);

0x0

Message("0x%X \n",

GetEnumSize(BADADDR)

);

0x0

Операнд

Пояснения

Enum_id

Идентификатор перечисления

Return

==return

Пояснения

!=0

Число членов перечисления

==0

Пустое перечисление

Ошибка

Long GetEnumFlag(long enum_id);

Функция возвращает флаги, определяющие представление членов перечисления, заданного идентификатором.

Возможные значения перечислены ниже в таблице:

FF_0NUMH

0x00100000

шестнадцатеричное представление первого операнда

FF_0NUMD

0x00200000

десятичное представление первого операнда

FF_0CHAR

0x00300000

символьное представление первого операнда

FF_0SEG

0x00400000

первый операнд – сегмент

FF_0OFF

0x00500000

первый операнд – смещение

FF_0NUMB

0x00600000

Представление первого операнда в бинарном виде

FF_0NUMO

0x00700000

Представление первого операнда в восьмеричном виде

FF_0ENUM

0x00800000

Представление первого операнда в виде перечисления

FF_0FOP

0x00900000

Принудительный первый операнд

FF_0STRO

0x00A00000

Представление первого операнда как смещения в структуре

FF_0STK

0x00B00000

первый операнд стековая переменная

FF_1VOID

0x00000000

тип второго операнда Void

FF_1NUMH

0x00100000

Шестнадцатеричное представление второго операнда

FF_1NUMD

0x00200000

десятичное представление второго операнда

FF_1CHAR

0x00300000

символьное представление второго операнда

FF_1SEG

0x00400000

второй операнд – сегмент

FF_1OFF

0x00500000

второй операнд – смещение

FF_1NUMB

0x00600000

Представление второго операнда в бинарном виде

FF_1NUMO

0x00700000

Представление второго операнда в восьмеричном виде

FF_1ENUM

0x00800000

Представление второго операнда в виде перечисления

FF_1FOP

0x00900000

Принудительный второй операнд

FF_1STRO

0x00A00000

Представление второго операнда как смещения в структуре

FF_1STK

0x00B00000

второй операнд стековая переменная

Пример:

FFFFFFFF ; enum enum_1

FFFFFFFF enum_1_0 = 1

FFFFFFFF enum_1_2 = 2

FFFFFFFF

Message("0x%X \n",

GetEnumFlag(

GetEnum("enum_1")

);

0x1100000

Операнд

Пояснения

Enum_id

Идентификатор перечисления

Return

==return

Пояснения

!=0

Флаг отображения членов перечисления

==0

Ошибка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]