piqiuarm 发表于 2012-8-18 21:41:12

linux 下的分段(.section)

本帖最后由 piqiuarm 于 2012-8-18 21:42 编辑

在linux的伪代码中有一个是 .section

我的是基于ELF格式的,参考资料中是这么说的:

“当目标格式为ELF时,.section命令应如下使用:
.section name [, "flags"[, @type]]
可选参数flags是被引号包围的字符串,可以由下列字符的任意组合:
a 可分配的段(allocatable)
w 可写段
x 代码段



#define   FUNC(loop,function)      _Call_func(loop,function)

追踪到:_Call_func()定义如下:

#define __Call_func(loop,function)    \
asm (                                \
".section .callback_" #loop "_body, \"ax\""        "\n"\
JSR" _" #function      "\n"          \
".previous"                "\n"         \
)
其中的 JSR 是跳转汇编指令,查到相关资料说:

previous用段堆栈的术语来说,本命令使当前段和堆顶段交换位置。
previous表示恢复到当前.section定义之前的那个段作为当前段。就是说这个previous与它前面的那个section一般成对出现.

在这里主要是不理解这一段汇编代码的意思,不知道怎么理解,
希望各位好友忙里抽点时间,帮帮看看,在这先谢过了。
页: [1]
查看完整版本: linux 下的分段(.section)