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 */