
C/C++
LinuxWorking
热爱嵌入式linux研究。
展开
-
C程序的BSS段 代码段 数据段
BSS段:BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文BlockStartedbySymbol的简称。BSS段属于静态内存分配。数据段:数据段(datasegment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(codesegment/textsegment)通常是指用来存放原创 2017-11-09 16:16:04 · 417 阅读 · 0 评论 -
Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)
在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly。本文的笔记试图说明Inline Assembly的基本语法规则和用法。内联汇编(或称嵌入汇编)的基本语法模板比较简单,如下所示(为使结构更清晰,这里特意做了换行,其实完全可以全部写到单行中):asm [ volatile ] ( a原创 2017-11-09 16:10:46 · 527 阅读 · 0 评论 -
C语言函数之可变参数原理:va_start、va_arg及va_end
说到C语言函数可变参数,我们最先想到的可能就是printf、scanf、printk了。在Linux-2.6.24.7内核源码里,printk函数原型如下:asmlinkage int printk(constchar*fmt,...)asmlinkage表示通过堆栈传递参数。gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种原创 2017-11-08 22:33:08 · 327 阅读 · 0 评论 -
C语言可变参数函数取参方法
熟悉C的人都知道,C语言支持可变参数函数(Variable Argument Functions),即参数的个数可以是不定个,在函数定义的时候用(...)表示,比如我们常用的printf()\execl函数等;printf函数的原型如下:intprintf(constchar *format, ...);注意,采用这种形式定义的可变参数函数,至少需要原创 2017-11-08 22:28:59 · 1359 阅读 · 0 评论