- 博客(18)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
转载 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
很多人表面上看着老实巴交的,实际上内心比谁都好强、自负、虚荣、甚至阴险。工作中见的多了,也就习惯了。有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌。但是他们所表现的又未必不是真性情。我相信大多数人都看过《豪门夜宴》这部香港老电影。张学友、梁朝伟演的拍马屁的场景太有意思了,其中有这样一段:当两马屁精帮老板说出主意,老板马上叫停,然后拍一下脑门:“哦。。。我想到
2013-06-29 10:56:07 1118
转载 有符号数,无符号数,补码,溢出
1、加减运算指令是不区分有符号和无符号的,编程人员自己要心理有数。说清这个问题,需要理解几个概念:1. CF 进位标志位 Carry Flag反映运算是否产生进位或者借位的操作,如果运算结果的最高位产生了一个进位或错位,那么,其值为1,否则为0。2. OF 溢出标志 Overflow Flag溢出标志OF用于反映有符号数 加减运算所得结果是否溢出,如果运算结果超过当前运
2013-06-25 21:50:22 4926
翻译 cortx-a8处理器可配置选项
********************************************** 特性 选项---------------------------------------------- AXI总线宽度 64位 or 128位的总线宽度-------------------------
2013-06-17 22:52:42 861
原创 后缀++或--何时执行自增或自减操作?(顺序点)
问:在使用后缀形式的++或--时,何时执行自增或自减操作?答:这是一个非常好的问题,也是一个非常难回答的问题。C语言标准引入“顺序点”的概念,并且指出“应该在前一个顺序点和下一个顺序点之间对存储的操作数的值进行更新”。在C语言中有多种不同类型的顺序点,表式语句的末尾是其中一种。在表达式语句的末尾,该语句中的所有自增和自减操作都必须执行完毕,否则不能执行下一条语句。一些运算符(逻
2013-06-16 16:19:25 2112
原创 v+=e不等于v=v+e
当v有副作用时,其实v+=e不等于v=v+e计算v+=e只会求一次v的值,而计算v=v+e则会求两次v的值。在后一种情况下,对v求值可能引起的任何副作用也都会出现两次。a[i++] += 2; //i只会自增一次如果用=代替+=,变成:a[i++] = a[i++] + 2;//i的值在别处被修改和使用了,因此上述语句的结果是未定义的。i的值可
2013-06-16 15:19:34 2134 3
原创 Uboot目录结构
apiarchboardcommomcpudiskdocdriversdtsexamplesfsincludelibnand_splnetpostspltestrtctoolsBoard和开发板相关的文件。每一个开发板都以一个子目录出现在当前目录中,如:board/samsung/smdk6410,
2013-06-15 13:46:09 1098
原创 Linux kernel目录
内核目录:archblockcryptoDocumentationdriversfirmwarefsincludeinitipckernellibmmnetsamplesscriptssecuritysoundusrvirtarch目录arch是architecture的缩写。内核所支持的每种C
2013-06-13 21:40:43 1834
转载 C语言中/*...*/
一些早期的编译器会删除每条注释中的所有字符,使得语句a/*...*/b = 0;可能被编译器理解成ab = 0;然而依据C标准,编译器必须用一个空格字符替换每条注释语句,因此上面提到的技巧并不行,我们实际上会得到下面的语句:a b = 0;另外/*.....*/不允许嵌套
2013-06-13 10:29:08 712
转载 寄存器的分配
编译器会试图对C函数中的每个局部变量分配一个寄存器。如果几个局部变量不会交叠使用,编译器会对他们分配相同的寄存器。当局部变量多于可用的寄存器时,编译器会使用堆栈存放这些变量。ARM Thumb过程调用标准ATPCS:R0~R3用于传参,RO用于返回值R4~R11通用变量寄存器R12临时过渡寄存器R13堆栈指针R14连接寄存器R15 PC
2013-06-11 20:13:45 846
转载 调试技巧
1.调试标记适用预处理#define定义一个或多个调试标记,在代码中把调试部分适用#ifdef和#endif进行管理。当程序最终调试完毕后,只需要使用#undef标记。调试代码就会消失。常用的调试标记为DEBUG,语句序列:#define DEBUG#ifdef DEBUG调试代码#endif2.把变量和表达式转换成字符串可以使用字符串运算符来实现转换输出定义#de
2013-06-11 11:11:05 582
原创 编译器相关是一个问题!
1.不同的编译器对于数据类型的约定可能不同。char,short,int,long分别表示什么?2.不同的编译器在处理函数调用的传参与返回值可能不同。3.不同编译器在局部变量的处理上可能不同。4.不同编译器在组织结构体的时候,在存储的布局可能不同。5.不同编译器在缺省状态下的优化选项可能不同。
2013-06-11 10:59:47 617
转载 嵌入式软件编译链接
每个目标文件是独立编址的,也就是说每个目标文件(*.o)的第一条指令都从相同的地址开始存放。连接器的作用:1.将多个目标文件或库文件按照各文件中段进行统一编址。2.生成一个完整的统一的地址印象。3.嵌入式系统中一般生成一个绝对地址印象(非PIC)。4.在有MMU的系统中可以为每个任务单独分配一个地址空间。
2013-06-09 22:33:56 1120
转载 函数指针
注意区别:int *fun(char *);//这是一个返回整形指针的函数int (*fun)(char *);//这是一个函数指针函数指针使用:例子:int ptr; int fn(int); int(*fp)(int);fp = fn;//正确fp = fn(5);//错误fp = &ptr;
2013-06-09 21:55:44 541
转载 内存与指针
如图为执行进程的内存地址空间。代码段就是存储程序的文本的,所以有时候也叫做文本段,指令指针中的指令就是从这里取得。数据段是存储数据用的,还可以分成初始化为非零的数据区,BSS,个堆(Heap)三个区域。初始化非零数据区域一般存放静态非零数据和全局的非零数据。BSS是Block Started by Symbol的缩写,原本是汇编语言中的术语。该区域主要存放未初始化的全局数据和静态数据。
2013-06-09 10:12:56 643
转载 C语言中#和##
#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串 例如: > #define STRCPY(dst, src) strcpy(dst, #src) 则 > STRCPY(buff, abc) 相当于
2013-06-08 20:09:38 774
转载 [gcc核心扩展]关于gcc中的typeof以及其他
(使用以下扩展可能需要使用-gnu99) GNC CC是一个功能非常强大的跨平台C编译器,它对C 语言提供了很多扩展,这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把支持GNU 扩展的C 语言称为GNU C。 Linux 内核代码使用了大量的 GNU C 扩展,以至于能够编译 Linux 内核的唯一编译器是 GNU CC,以前甚至出现过编译 L
2013-06-08 17:00:33 1453
(仿冒pl-2303_win7_64bit驱动
2013-06-15
c++,加class与不加有什么区别
2015-11-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人