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

Success SegComb(long segea,long comb)

Функция управляет объединением сегментов, помещая в ассемблерный листинг атрибут комбинирования (private, public, common, at, stack).

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

Аргумент segea задает любой линейный адрес, принадлежащий сегменту. Если передать адрес не принадлежащий никакому сегменту, функция возвратит ошибку.

Аргумент comb представляет собой атрибут выравнивания, и может принимать одно из значений, приведенных в Таблице ???

Пример использования:

SegCreate(0x1000,0x2000,0x100,0,0,scPub);

a) создаем новый сегмент с атрибутом комбинирования public

seg000:0000 seg000 segment at 100h public ''

b) сегмент успешно создан, атрибут комбинирования выделен жирным шрифтом

SegComb(0x10000,scStack);

c) вызываем функцию SegComb для изменения атрибута комбинирования сегмента

seg000:0000 seg000 segment at 100h stack ''

d) атрибут комбинирования изменен

определение

#

пояснения

scPriv

0

Атрибут private. Не может быть соединен ни с одним другим сегментом

scPub

2

Атрибут public. Может быть объединен с другими сегментами с учетом требуемого выравнивания

scPub2

4

Атрибут, определенный Microsoft, то же самое, что и scPub .

scStack

5

Атрибут stack. Может быть объединен с public сегментами, но с выравниваем в один байт.

scCommon

6

Атрибут common.

scPub3

7

Атрибут, определенный Microsoft, то же самое, что и scPub .

Таблица 6

??? #верстальщику – change table

аргумент

пояснения

ea

любой линейный адрес, принадлежащий сегменту

comb

Атрибут (смотри определения в таблице 6)

return

=return

Успешность завершения операции

1

Операция завершилась успешно

0

При выполнении операции произошла ошибка

Родственные функции: SegCreate

Интерактивный аналог: “~View\Segments”, <Ctrl-E>; <Alt-S>

Success SegClass(long ea,char class)

Функция изменяет атрибут класса сегмента, помещая в ассемблерный листинг атрибут класса.

Атрибут класса представляет собой текстовую строку, указывающую линкеру порядок следования сегментов. Если это не запрещено комбинаторным атрибутом (см. описание SegComb), линкер объединяет вместе сегменты с одинаковым именем. Рекомендуется назначать имена так, чтобы они отображали функциональное назначение сегментов, например, “CODE”, “DATA”, “STACK” и т.д. Общепринятые имена перечислены в таблице ???.

Замечание: большинство линкеров требуют, чтобы в объективном файле присутствовал хотя бы один сегмент с именем “CODE”, в противном случае, они могут отказаться обрабатывать такой файл или обработают его неправильно.

Пример использования:

SegCreate(0x1000,0x2000,0,0,scPub);

a) создаем сегмент с атрибутом public

seg000:0000 seg000 segment at 100h public ''

b) сегмент создан, по умолчанию атрибут класса сегмента отсутствует

SegClass(0x1000,”MySegment”);

с) вызываем функцию SegClass для изменения атрибута класса сегмента

seg000:0000 seg000 segment at 100h public 'MySegment'

d) атрибут класса сегмента изменен (в тексте он выделен жирным шрифтом)

Класс

Пояснения

CODE

Pure code

Сегмент кода

DATA

Pure data

Сегмент данных

CONST

Pure data

BSS

Uninitialized data

Неиницилизированные данные

STACK

Uninitialized data

Сегмент стека

XTRN

Extern definitions segment

Таблица 7 Общепринятые наименования классов сегментов

??? #верстальщику – change table

аргумент

пояснения

ea

линейный адрес, принадлежащий сегменту

class

класс сегмента

return

=return

Успешность завершения операции

1

Операция завершилась успешно

0

При выполнении операции произошла ошибка

Родственные функции: SegCreate

Интерактивный аналог: “~View\Segments”, <Ctrl-E>; <Alt-S>

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