Какая польза от кода прагмы и раздела данных? - PullRequest
5 голосов
/ 15 марта 2012

Что именно произойдет с сегментом данных и сегментом текста, если я использую две строки ниже в моем файле исходного кода c?

#pragma CODE_SECTION(func1, "Sec1")
#pragma DATA_SECTION(globalvar1, "Sec2")

Ответы [ 2 ]

5 голосов
/ 15 марта 2012

Источник (содержит примеры): http://hi.baidu.com/jevidyang/blog/item/6d4dc436d87e3a300b55a918.html

Примечание: #pragma зависит от компилятора, поэтому синтаксис может отличаться для вашего компилятора.

Прагма DATA_SECTION выделяет место для символа в разделе, называемом именем раздела. Синтаксис для прагмы в C может быть:

#pragma DATA_SECTION (symbol, "section name");

Синтаксис для прагмы в C ++ может быть:

#pragma DATA_SECTION ("section name");

Прагма DATA_SECTION полезна, если у вас есть объекты данных, которые вы хотите связать в области, отдельной от секции .bss.


Прагма CODE_SECTION выделяет пространство для функции в разделе с именем имя раздела. Прагма CODE_SECTION полезна, если у вас есть объекты кода, которые вы хотите связать в области, отдельной от секции .text. Синтаксис прагмы в C может быть:

#pragma CODE_SECTION (func, "section name")

Синтаксис прагмы в C ++ может быть:

#pragma CODE_SECTION ("section name")
2 голосов
/ 15 марта 2012

#pragma означает «здесь следует что-то определенное реализацией, уникальное для этого компилятора». То, что произойдет, зависит от того, какой компилятор вы используете. Если компилятор не поддерживает эту конкретную прагму, все это будет проигнорировано.


В этом случае, однако, это довольно очевидно.

#pragma CODE_SECTION(func1, "Sec1") означает: «func1 должен находиться в памяти программ, в области памяти, называемой Sec1». Sec1 будет ячейкой памяти, доступной только для чтения, где будет выделен фактический код func1.

#pragma DATA_SECTION(globalvar1, "Sec2") означает: «globalvar1 должен находиться в памяти данных, в области памяти, называемой Sec2». Sec2 будет местом чтения / записи, где будет размещена переменная globalvar1.

...