读《想成为嵌入式程序员应知道的0x10个基本问题》读书笔记!!

自己知道理解不够深刻以及一点也不知道的地方,以后还要仔仔细细的阅读:

一。注意处理器的位数关系到数据长度益出的问题

用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
         #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。在你的表达式中用到UL(表示无符号长整型)。
 二。为什么死循环

while(1)
{

}

for(;;)
{

}
好,下来好好看下C编译器把这两段代码编译成汇编在内存中的形式

三。数据声明

关于指针的应用看了好多年了,还是记不到,特别是那些声明指针的指针的指针的。。。。等等

四。关键字Static应给复习一下了,虽然还是掌握

五。关键字Volatile一点都不知道,下来好好学习

       一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1。 并行设备的硬件寄存器(如:状态寄存器)
2。 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3。 多线程应用中被几个任务共享的变量

六。位操作这部分应给多多联系,好像一点都没掌握。

七。访问固定的内存位置

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
    int *ptr;
    ptr = (int *)0x67a9;
    *ptr = 0xaa55;

 A more obscure approach is:
一个较晦涩的方法是:

    *(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

八。中断这部分一点都不知道,需要深入的学习,但自己好像熟悉Dos下的中断象量,乌!!!好久都没弄过Dos了,小子忘记了吧!!

九。注意C中的不同数据类型做算数运算时候的自动转换,以及自动转换的级别,不知道自己为什么记不住,一定要记住。

十。处理器字长

十一。动态内存分配要好好找资料看看

十二。Typedef 关键字是声明哦,好像曾经认识,复习一下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值