Что именно произойдет с сегментом данных и текстовым сегментом, если я использую следующие две строки в моем файле исходного кода c?
#pragma CODE_SECTION(func1, "Sec1")
#pragma DATA_SECTION(globalvar1, "Sec2")
Что именно произойдет с сегментом данных и текстовым сегментом, если я использую следующие две строки в моем файле исходного кода c?
#pragma CODE_SECTION(func1, "Sec1")
#pragma DATA_SECTION(globalvar1, "Sec2")
Источник (содержит примеры): https://web.archive.org/web/20080803190119/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")
#pragma
зависит от компилятора.
- person user247702; 15.03.2012
#pragma
означает, что «здесь следует что-то, определяемое реализацией, уникальное для этого компилятора». То, что произойдет, зависит от используемого вами компилятора. Если компилятор не поддерживает эту конкретную прагму, все это будет проигнорировано.
Однако в данном случае это достаточно очевидно.
#pragma CODE_SECTION(func1, "Sec1")
означает: "func1 должна находиться в памяти программы, в области памяти с именем Sec1". Sec1 будет ячейкой памяти только для чтения, где будет размещен фактический код func1.
#pragma DATA_SECTION(globalvar1, "Sec2")
означает: "globalvar1 должен находиться в памяти данных, в области памяти с именем Sec2". Sec2 будет местом чтения/записи, где будет размещена переменная globalvar1.