zoukankan      html  css  js  c++  java
  • Linux内核源代码情景分析读书笔记(3)-Linux内核中的汇编语言

    1. 在Linux的内核底层中的代码,多数是以汇编语言完成的。 
      汇编代码以两种形式存在,一种是纯汇编代码,后缀名为.s的文件。当然这样的汇编代码其中也加入了预编译选项,而不是单纯的汇编。另一种是在C语言中嵌入汇编语言。虽然在ANSI的C语言标准中并没有关于汇编片段的规定,但事实上各种实际使用的C编译中都作了这方面的扩充。GNU的C编译器gcc也在这方面作了很强的扩充。
      GNU的C编译器gcc在内核“纯”汇编代码中采用了不同于常用386汇编语言的句法;而在嵌入C程序的汇编片段中,也增加了一些指导汇编工具如何分配使用寄存器、以及如何与C程序中定义的变量相结合的语言成分。这些成分使得这种汇编语言实际上变成了一种介乎386汇编和C之间的一种中间语言。

    2.嵌入C代码中的汇编语言
    插入C代码中的汇编语言片段可以分为四个部分,以“:”号进行分隔,其一般形式为
    指令部:输出部:输入部:损坏部
    其中指令部是必需的,格式大体与标准汇编相同。
    输出输入指示汇编代码段与C代码变量之间的关联。其相关格式如下:
    "m" "v" "o" ----内存单元
    "r"              ----任意寄存器
    "q"             ----寄存器eax,ebx,ecx,edx之一
    "i" "h"         ----直接操作数
    "E" "F"       ----浮点数
    "g"             ----任意
    "a" "b" "c" "d"-分别表示使用eax,ebx,ecx,edx
    "S" "D"       ----分别表示使用esi,edi
    "I"               ----常数(0-31)

  • 相关阅读:
    查找实体,只限关系数据源的报表模型
    Reporting Service 报表模型
    Façade外观(结构型模式)
    安装Adventureworks2008的艰难历程(原创)
    使用关系数据库和矩阵,Reporting Service也能实现类似Analysis的分析
    简单工厂模式
    报表模型_创建透视
    有用的几个维度属性
    报表模型_创建计算字段
    Composite 组合(结构型模式)
  • 原文地址:https://www.cnblogs.com/peteryj/p/1944906.html
Copyright © 2011-2022 走看看