C++ #pragma code_seg用法

  • 格式:doc
  • 大小:17.00 KB
  • 文档页数:1

下载文档原格式

  / 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#pragma code_seg

格式如:

#pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节,如果code_seg 没有带参数的话,则函数存放在.text节中。

push (可选参数)将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名

pop(可选参数)将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名identifier(可选参数)当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈

"segment-name" (可选参数)表示函数存放的节名

例如:

//默认情况下,函数被存放在.text节中

void func1() {// stored in .text }

//将函数存放在.my_data1节中

#pragma code_seg(".my_data1")

void func2() {// stored in my_data1 }

//r1为标识符,将函数放入.my_data2节中

#pragma code_seg(push, r1, ".my_data2")

void func3() {// stored in my_data2 }

int main() {

}

例如

#pragma code_seg(“PAGE”)

作用是将此部分代码放入分页内存中运行。

#pragma code_seg()

将代码段设置为默认的代码段

#pragma code_seg("INIT")

加载到INIT内存区域中,成功加载后,可以退出内存