在中断子程序使用累加器、工作寄存器等资源时,要先将其原来的内容保存起来,这一过程叫做()。当中
断子程序执行完毕,在返回主程序之前,要将这些内容再取出,送还到累加器、工作寄存器等原单元中,这一过程称为()。
断子程序执行完毕,在返回主程序之前,要将这些内容再取出,送还到累加器、工作寄存器等原单元中,这一过程称为()。
A.由CPU自动完成.
B.由中断服务子程序完成
C.在中断响应中完成.
D.在主程序中完成B
关键字volatile 有什么含意 并给出三个不同的例子。
一个定义为 volatile 的变量是说这变量可能会被意想不到地改变,这样,编译
器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须
每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面
是volatile变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
Volatile
8. 关键字volatile 有什么含意并给出三个不
同的例子。
一个定义为volatile的变量是说这变量可能会
被意想不到地改变,这样,编译器就不会去假设这
个变量的值了。精确地说就是,优化器在用到这个
变量时必须每次都小心地重新读取这个变量的值,
而不是使用保存在寄存器里的备份。下面是volatile
变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自
动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认
为这是区分C 程序员和嵌入式系统程序员的最基
本的问题。嵌入式系统程序员经常同硬件、中断、
RTOS等等打交道,所用这些都要求volatile变量。
不懂得volatile内容将会带来灾难。
假设被面试者正确地回答了这是问题(嗯,怀
疑这否会是这样),我将稍微深究一下,看一下这
家伙是不是直正懂得volatile完全的重要性。
1). 一个参数既可以是const 还可以是volatile
吗?解释为什么。
A.中断标志寄存器IFR
B.中断标志寄存器PIEIFRx.y
C.中断标志寄存器IF
D.中断标志寄存器PIEIFRy.x