Kernel 在iLinux内核中,.data和.long的含义是什么?

Kernel 在iLinux内核中,.data和.long的含义是什么?,kernel,Kernel,我读了这个源代码。我在源代码中找不到.data或.long定义 它们是对汇编程序的特殊指导,告诉汇编程序做一些不同的事情,而不是在编译后的机器代码中插入处理器指令 通知汇编程序将以下指令发送到可执行文件的data部分的一个子部分的末尾。通常,机器代码被发送到所谓的可执行文件的文本部分,而诸如全局变量之类的不可执行数据则存储在所谓的数据部分之一。除其他功能外,不同的部分在运行时具有不同的内存权限 .long指令相当于,它只是说在机器代码中插入一个文字数字值。因此.long SYMBOL\u NAM

我读了这个源代码。我在源代码中找不到
.data
.long
定义

它们是对汇编程序的特殊指导,告诉汇编程序做一些不同的事情,而不是在编译后的机器代码中插入处理器指令

通知汇编程序将以下指令发送到可执行文件的
data
部分的一个子部分的末尾。通常,机器代码被发送到所谓的可执行文件的
文本
部分,而诸如全局变量之类的不可执行数据则存储在所谓的
数据
部分之一。除其他功能外,不同的部分在运行时具有不同的内存权限

.long
指令相当于,它只是说在机器代码中插入一个文字数字值。因此
.long SYMBOL\u NAME(sys\u ni\u call)
插入
sys\u ni\u call
符号位置的数值

因此,将它们放在一起,一个
.data
指令后跟一个
.long
指令将导致汇编程序将特定的整数值放入结果目标代码的一个
数据
部分中。这些值将是不可执行的,它们可能是只读的或读写的,这取决于
数据
部分的
sys\u call\u table
子部分的权限是如何配置的。

它们是对汇编程序的特殊指示,告诉它做一些不同的事情,而不是在编译后的机器代码中插入处理器指令

通知汇编程序将以下指令发送到可执行文件的
data
部分的一个子部分的末尾。通常,机器代码被发送到所谓的可执行文件的
文本
部分,而诸如全局变量之类的不可执行数据则存储在所谓的
数据
部分之一。除其他功能外,不同的部分在运行时具有不同的内存权限

.long
指令相当于,它只是说在机器代码中插入一个文字数字值。因此
.long SYMBOL\u NAME(sys\u ni\u call)
插入
sys\u ni\u call
符号位置的数值

因此,将它们放在一起,一个
.data
指令后跟一个
.long
指令将导致汇编程序将特定的整数值放入结果目标代码的一个
数据
部分中。这些值将是不可执行的,它们可能是只读或读写的,具体取决于
数据
部分的
sys\u call\u表
子部分的权限配置方式

.data
  ENTRY(sys_call_table)
    .long SYMBOL_NAME(sys_ni_call)           /* 0 */
    .long SYMBOL_NAME(sys_exit)
    .long SYMBOL_NAME(sys_fork)
    ...
    .long SYMBOL_NAME(sys_vfork)             /* 190 */