LINUX.ORG.RU

GNU Assembler: Зачем нужна директива .type?

 ,


0

2

В интернете написано, что эта директива описывает тип данных, на который указывает символ, но зачем это надо - непонятно. Разве ассемблеру не хватает одной лишь директивы .section, чтобы знать тип данных?

Кстати, тот же ассемблер, поставляемый с Xcode (OS X), директивы .type не понимает вообще.

Deleted

емнип єта директива нужна при для генерации таблиц символов, которые зависят не от процессора, а от формата генерируемого файла (ну там типа COFF или ELF)

AF ★★★
()
Ответ на: комментарий от Deleted

.section .text - он и в Африке read-execute.

Это характеристики СЕКЦИИ.
А .type нужен для характеристик элементов ТАБЛИЦЫ СИМВОЛОВ.

Разницу между секцией и таблицей символов ферштеен?

AF ★★★
()
Ответ на: комментарий от AF

Разницу между секцией и таблицей символов ферштеен?

Да.

Это характеристики СЕКЦИИ.

Это ясно, но откуда в .text может быть object или в .data function? Разве секция сама по себе не определяет тип данных внутри неё? Мне интересно, для чего придумали возможность создавать символы неподходящего типа.

Задам другие вопросы:

  • Можно ли не использовать эту директиву? Не приведёт ли это к неожиданным проблемам?
  • Обращает ли внимание на типы символов компоновщик? Другие программы?
Deleted
()
Ответ на: комментарий от Deleted

Разве секция сама по себе не определяет тип данных внутри неё?

Нет конечно! Секция определяет кусок памяти с некими атрибутами.
У символов есть еще другие атрибуты. Подробнее смотри описание формата таблицы символов.

Обращает ли внимание на типы символов компоновщик?

Ну в общем да! Иначе нафига они нужны?

Можно ли не использовать эту директиву? Не приведёт ли это к неожиданным проблемам.

Ну как бы можно и не использовать. К примеру, если у тебя есть некий в доску локальный обьект, то нафига он в таблице символов. Но вот если обьект не локальный, то єто уже проблема.

AF ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.