
c语言小知识
Elta
这个作者很懒,什么都没留下…
展开
-
strip: Unable to recognise the format of the input file
Sometimes U got error while doing 'make install' :strip: Unable to recognise the format of the input fileThis is because the flag "INSTALLSTRIP = -s" in file config.makwill pass to 'install' a转载 2013-03-15 10:39:15 · 5790 阅读 · 0 评论 -
“~”在C语言中的含义
今天看到代码中有一个 a & ~1的代码,不明白~的意思,百度了一下~代表的意思是按位取反,例如 ~1在32位机器中就成了 1: 00000000 0000000000000000 00000001~1:11111111 11111111 11111111 11111110这个功能可以用来给数字快速分组,例如for ( i = 0; i < 100; i++) //每3个原创 2013-07-03 17:32:26 · 55515 阅读 · 0 评论 -
【转】关于分支延迟槽
1. 概述分支延迟槽 (Branch delayslot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交(commit)。看这个代码片段 (MIPS Linux kernel 2.6.17):801ea9d4: 02202021 move a0,s1801ea9d8: 27a50014原创 2013-07-03 17:33:43 · 2732 阅读 · 0 评论 -
C语言的整型和长整型的字节长
16位系统:long是4字节,int是2字节32位系统:long是4字节,int是4字节64位系统:long是4字节,int是4字节 指针长度默认是unsignedlong。 int的长度,是由硬件和系统共同决定的。比如当年的dos是运行在16位CPU下的,他的int就是两个字节,win95是运行在32位CPU下的,但是win95还是16位的系统设计,所以他的int还是原创 2013-07-03 17:34:05 · 2393 阅读 · 0 评论 -
【转】MIPS寄存器介绍
MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下:下表描述32个通用寄存器的别名和用途;REGISTERNAMEUSAGE$0$zero常量0(constant value 0)$1$at保留给汇编器(Reserved for assembler)$2-$3原创 2013-07-03 17:34:40 · 713 阅读 · 0 评论 -
autotools工具的使用,配置openOCD
这是我编openOCD时候出现的问题,现在经过使用可以进行openOCD的config了。着急用不想看内容的朋友可以直接看红字部分,按上下文逐一键入红字内容就可以了。黑字的内容为我工作过程,有我的出错信息。elta@elta:openOCD$autoconf configure.ac:8:error: possibly undefined macro: AM_INIT_AUTOM原创 2013-07-03 17:36:20 · 1502 阅读 · 0 评论 -
处理器的大小端模式
简介大端模式 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b484 6c4e原创 2013-07-03 17:32:35 · 678 阅读 · 0 评论 -
【转】c嵌入汇编
由于C语言在定时方面的缺陷,在某些场合下,C程序中需要嵌入汇编代码,以弥补C的缺陷。通常,在C语言程序中嵌入汇编的方法,无外乎两种 · 在C程序中填入#asm和#endasm的编译命令,在之中填入汇编代码· 编写汇编函数,通过链接定位器和特殊的编译方式链接方式加入到所有程序的目标代码中但这两种方法都存在实现困难的问题,对刚起步经验不足的程序员来说,基本上很难弄懂和编译成功。原创 2013-07-03 17:34:10 · 594 阅读 · 0 评论 -
[转]C/C++中static关键字详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在执行原创 2013-07-03 17:35:26 · 402 阅读 · 0 评论 -
【转2】GCC 内联汇编
有时为了高效,有时为了直接控制硬件,有些模块我们不得不直接用汇编语言来编写,并且对外提供调用的接口,隐藏细节,这其实就是内联汇编。如何使用内联汇编?我们就以 GCC 为例,一窥其中奥秘!一、关键字 如何让 GCC 知道代码中内嵌的汇编呢? 借助关键字!来看下面的例子: __asm____volatile__("hlt"); __asm__ 表示后面的代码为内嵌原创 2013-07-03 17:35:39 · 390 阅读 · 0 评论 -
结构体和类的关系——杂谈闲扯淡
三个结构体:typedef struct parent { int a;}parent;typedef struct son { parent father; int b;}typedef struct grad_son { son father; int c;}三个结构体如上述,那么,我们定义一个grad_son:grad_so原创 2013-07-03 17:36:29 · 523 阅读 · 0 评论 -
[转]MIPS GCC 嵌入式汇…
Elta提示:代码里的/,实际是\,自行实验的时候注意一下! 当前版本: 0.1完成日期: 2007-4-9作者: Dajie Tan1. GCC 内嵌汇编的基本格式 asm("assembly code");如: asm("syscall"); //触发一个系统调用如果有多条指令,则需在指令尾部添加'/t'和'/n',如:原创 2013-07-03 17:36:07 · 406 阅读 · 0 评论 -
off-by-one error
今天看书有一个off-by-one error,感觉很陌生,google了一下,wiki上有一些资料。Consider an array of items, anditems m through n (inclusive)are to be processed. How many items are there? An intuitive answermay be n−m, but原创 2013-07-03 17:32:31 · 666 阅读 · 0 评论 -
undefined reference to 'pthread_…
今天做了一个GNU/LINUX多线程的例子,我感觉我的编译命令应该是对的,编译命令如下:gcc -lpthread -g multiprocess.c -o multiproc然后报出了错误:/tmp/cc8nvfV3.o: In function 'main':undefined reference to 'pthread_create'undefined reference to原创 2013-07-03 17:33:11 · 442 阅读 · 0 评论 -
[转]gnu mips 编译参数
MIPS Options-EBGeneratebig-endian code. -ELGeneratelittle-endian code. This is the default for `mips*el-*-*'configurations. -march=archGeneratecode that will run on arch, which canbe the原创 2013-07-03 17:34:12 · 2058 阅读 · 0 评论 -
[转]GCC内嵌汇编
内嵌汇编语法如下: __asm__(汇编语句模板: 输出部分:输入部分: 破坏描述部分) 共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,也需要用“:”格开,相应部分内容为空。例如: __asm____volatile__("cli": : :"memory")原创 2013-07-03 17:34:21 · 607 阅读 · 0 评论 -
[转]root sysroot chroot rootfs解…
1、root是管理员,是最高权限的象征,系统一般从安全角度默认禁用,通过su或sudo获取root权限;2、rootfs是根文件系统,linux系统的根目录的挂载点是/,roofs是根目录下的所有的文件集合,是一个可以运行的系统的组织。3、chroot是把目标地址作为根目录来使用,这个目录下边是一个可以运行的系统组织,当然PATH中必须要有shell才行。4、sysroot是交叉编译时原创 2013-07-03 17:34:46 · 736 阅读 · 0 评论 -
【转】gcc命令
gcc and g++现在是gnu中最主要和最流行的c& c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld]GCC能够处理的后缀有:a. *.c原创 2013-07-03 17:33:13 · 396 阅读 · 0 评论 -
[转]int* p[2] 与 int (*p)[2]…
(1)int* p[2] 是一个指向int型的指针数组,即:p是包含两个元素的指针数组,指针指向的是int型。可以这样来用:#include void main() { int* p[2]; int a[3] = {1, 2, 3}; int b[4] = {4, 5, 6, 7}; p[0] = a; p[1] = b; for(int i = 0; i < 3; i++) c原创 2013-07-03 17:33:27 · 520 阅读 · 0 评论 -
[转]有关C语言中有符号/无符号数混…
这两天的工作需要涉及到对无符合数,有符号数作混合运算。作了一些实验,发现自己写了这么多年的程序,以前对于符号数计算相关的理解居然仍存在一些盲点。有符号数与无符号数混合运算可能有三种混合方式1。操作数全为有符号数如:int a = -1;int b = 2;a + b;2。操作数全为无符号数如:unsigned int a = (unsigned int)-1;u原创 2013-07-03 17:34:08 · 560 阅读 · 0 评论 -
浮点数的表示和精度
">1浮点数">IEEE754定义了单精度浮点数和双精度数浮点数,即float和double。float有32bit,double有64bit。它们都包括符号位、指数和尾数。"> "> 符号位指数尾数float31(1)30-23(8)22-0(23)double63(1)62-52(11)51-0(52)">符号位有1bit,0表示正、原创 2013-07-03 17:35:15 · 1074 阅读 · 5 评论 -
openOCD编译出错修正
make[2]: Entering directory`/home/elta/work/openOCD/build/doc'restore=: && backupdir=".am$$" && \ am__cwd=`pwd` &&CDPATH="${ZSH_VERSION+.}:" && cd ../../doc &&\ rm -rf $backupdir &原创 2013-07-03 17:36:22 · 1541 阅读 · 0 评论