在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline
assembly。本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章
^_^)。注意:由...
分类:
系统相关 时间:
2014-04-28 09:10:46
阅读次数:
1246
一 基本语法1寄存器引用引用寄存器要在寄存器号前加百分号%,如“movl %eax,
%ebx”。80386有如下寄存器:1、8个32-bit寄存器%eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp;2、8个16-bit寄存器,它们事实上是上面8个32-bit寄存器的低1...
分类:
其他好文 时间:
2014-04-28 09:06:48
阅读次数:
998
__builtin_prefetch() 是 gcc
的一个内置函数。它通过对数据手工预取的方法,减少了读取延迟,从而提高了性能,但该函数也需要 CPU 的支持。该函数的原型为:void
__builtin_prefetch (const void *addr, ...)其中参数 addr 是个内存...
分类:
其他好文 时间:
2014-04-28 06:59:12
阅读次数:
519
oracle对于子查询的支持做的很好,oracle optimizer会对inline
view进行query transfomation,即视图合并,不过也经常带来意想不到的问题。下面是一个inline view的merge的例子:1,
创建临时表1 create table test1 as ....
分类:
数据库 时间:
2014-04-28 04:07:33
阅读次数:
928
在Linux下进行C语言编程,必然要采用GNU
GCC来编译C源代码生成可执行程序。一、GCC快速入门Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项]
[目标文件]其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out我们来看一下经典入门程序"Hello World!...
分类:
其他好文 时间:
2014-04-28 03:26:12
阅读次数:
432
一般高级语言程序编译的过程:预处理、编译、汇编、链接。gcc在后台实际上也经历了这几个过程,我们可以通过-v参数查看它的编译细节,如果想看某个具体的编译过程,则可以分别使用-E,-S,-c和-O,对应的后台工具则分别为cpp,cc1,as,ld。下面我们将逐步分析这几个过程以及相关的内容,诸如语法检...
分类:
其他好文 时间:
2014-04-27 22:42:14
阅读次数:
603
首先简要阐述关于gcc、glibc和 binutils模块之间的关系
一、关于gcc、glibc和binutils模块之间的关系
1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如 libgcc_s.so、libstdc++.so等。
2、binutils提供了一系列用来...
分类:
其他好文 时间:
2014-04-27 19:51:53
阅读次数:
640
使用纯CSS+html写出方向箭头,贴出来就可以用,100%原创
.pointsRule{
display: inline-block;
font-size: 12px;
margin-top:...
分类:
Web程序 时间:
2014-04-27 18:02:02
阅读次数:
1452