1.大小端
① 大端:存储时先放高字节,再放低字节(即低字节占高地址,高字节占低地址);
小端:存储时先放低字节,再放高字节(即低字节占低地址,高字节占高地址);
②请写一个c函数,当前系统为大端,返回0,小端返回1。
#include <stdio.h>
#include <stdio.h>
int main(int argc,char* argv[])
{
int a = 0x1234;
char b = *(char*)&a;
if(b==0x12)
{
printf("big end\n");
}
else
{
printf("little end\n");
}
return 0;
}
③32位的数0x12345678在小端模式和大端模式下的存放方式:
内存地址 小端存放内容 大端存放内容
0x4000 0x78 0x12
0x4000 0x56 0x34
0x4000 0x34 0x56
0x4000 0x12 0x78
2.要使用WinCE或标准Linux嵌入式操作系统,ARM必须带有MMU(内存管理单元)功能。
3.关于汇编语言正确的是:(D)
A.汇编程序,C、C++之间可以相互调用。
B.C/C++可以嵌入汇编指令。
C.在汇编程序和C/C++的程序之间可以进行变量的互访。
D.A、B、C都对。
4.BootLoader程序其中关键的系统初始化部分使用的的语言是:(D)
A.ARM汇编语言。
B.Thumb汇编语言。
C.C语言
D.汇编和C语言都可以
5.ARM系统复位后,第一条指令在00000000H。
6.针对没有MMU的ARM芯片,其操作系统可以使用uClinux、UC/OS-II。
7.在嵌入式芯片接口中,其中IIS是音频接口。
8.下面判断正确的是:(C)
A.char *a= "china";等价于char a; a="china";
B.char str[5]="china";等价于char s; s="china";
C.char s = "china";等价于char s;s="china";
D.char C[4]= "abc",d[4]="abc";等价于char c[4]=d[4]="abc";
9.若用数组名作为函数调用的实参,则实际上传给形参的是数组首地址。
10.定义一个结构体,需4字节对齐,应填入v1~v6的值为:(B)
#define PADS(x,y) char pad##x[y]
typedef struct
{
short a;
PADS(v1,v2);
char b[3];
PADS (v3,v4);
char *p;
PADS(v5,v6);
}ST_TEST;
替换后:
#define PADS(x,y) char pad##x[y]
typedef struct
{
short a;(1)
char pad##v1[v2] (v2)
char b[3]; (3)
char pad##v3[v4] (v4)
char *p;(4)
char pad##v5[v6] (v6)
}ST_TEST;
A. 0,1,0,4,0,0
B. 1,2,3,4,5,6
C. 100,2,1234,1,0,0
D. 1,2,3,7,1,12
11.以下程序结果为:
答案:52
12.0x01<<2+3的值为:
0000 0001 左移5位,结果为32
13.以下两个结构体有什么区别?
test1 占用12个字节,test2占用8个字节。char占1位,short占2位,int占4位。
14.定义一个函数宏,求x的平方
#define SQR(x) ((x)*(x))
15.下列代码有什么问题?
答: Segmentation fault (core dumped)