第八章ARM汇编语言与嵌入式c的混合编程
1 .严格按照嵌入式c语言的编程规范,编写c语言程序,实现对二维数组中的数据行和列进行排序。
答:略
2 .嵌入式c编程中常用的换挡操作有几种? 请说明与各运算对应的ARM指令的实现。 a )换挡操作分为左换挡操作和右换挡操作
左移运算符
右移位运算符实现将左操作数的各位向右移位
? 关于空座的补充方式,无符号的数量和有符号的数量有差异。
? 无符号数右移时,舍弃低位,高位用0修整。 其值相当于除以2 -右移位数次方
? 当将有符号的数字向右移位时,在处理器上选择逻辑上向右移位还是算术上向右移位
3.volatile限制符在程序中起什么作用? 请举例说明。
答: volatile的原意是―过渡性的或.―易变的,这个说明符对编译器的优化起着抑制作用。
如果在声明时用―volatile键进行限定,则遇到用该关键字声明的变量时,编译器将不再优化访问该变量的代码,从而实现对特殊地址的稳定访问。
? 例:硬件端口寄存器读取
? Char x=0,y=0,z=0;
? x=readchar(0x54000000; //引线端口
? y=x;
? x=readchar(0x54000000; //重新读取端口
? z=x;
? 上述代码由编译器
? Char x=0,y=0,z=0;
? x=readchar(0x54000000; //引线端口
? y=x;
? z=x;
? 要确保x的值来自实际端口,在声明时必须
? V olatile char x;
? Char y,z;
4 .请分析以下程序代码的执行结果。
#包含
主()。
int value=0xFF1;
int *p1、**p2、***p3、****p4;
p1=value;
p2=p1;
p3=p2;
p4=p3;