软考在线  |  计算机技术与软件专业技术资格(水平)考试   |   [请选择科目]
[ 成为 VIP会员 ]        登录  |  注册      我的  购物车
 
科目切换  联系我们 
    
  |   [请选择科目]

免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2023年上半年 嵌入式系统设计师 上午试卷 综合知识
  第40题      
  知识点:   sizeof   编译器
  章/节:   嵌入式系统程序设计       

 
假设以下代码运行环境为32位系统,其中,_attribute_((packed))的作用是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。
代码段1:

代码段2:

sizeof(struct  student1)、sizeof(union student2)的结果分别是()。
 
 
  A.  31和16
 
  B.  31和31
 
  C.  248和128
 
  D.  16和16
 
 
 

 
  第59题    2010年下半年  
   72%
下面程序运行后的输出结果是(59)。

  第19题    2022年上半年  
   0%
逻辑表达式求值时常采用短路计算方式。“&&”“||”“!”分别表示逻辑与、或、非运算,&..
  第19题    2016年下半年  
   38%
逻辑表达式求值时常采用短路计算方式。“&&”“||”“!”分别表示逻辑与、或、非运算,&..
 
  第35题    2021年上半年  
   100%
某驱动程序中设计了以下数据结构:

为了避免由于不同的编译环境对上述数据结构产生不同的编译结果,对上述数据结构..
  第33题    2015年下半年  
   44%
JTAG是用来进行嵌入式处理器调试的标准化接口,下列描述中,正确的是(33)。
  第41题    2013年下半年  
   54%
假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句:

得到b的机器数为(41)。
   知识点讲解    
   · sizeof    · 编译器
 
       sizeof
        sizeof用于计算表达式或数据类型的字节数,其运算结果与系统相关。例如,对于下面的数组定义,可用“sizeof(a)/sizeof(int)”计算出数组a的元素个数为7。
        
 
       编译器
        编译阶段要做的工作是用交叉编译或汇编工具处理源代码,产生目标文件。在嵌入式系统中,宿主机和目标机所采用的处理器芯片通常是不一样的。例如,目标机采用的CPU是DragonBall M68x系列或ARM系列,而宿主机采用的是x86系列。因此,为了把宿主机上编写的高级语言程序编译成可以在目标机上运行的二进制代码,就需要用到交叉编译器。
        与普通PC中的C语言编译器不同,嵌入式系统中的C语言编译器要进行专门的优化,以提高编译效率。一般来说,优秀的嵌入式C编译器所生成的代码,其长度和执行时间仅比用汇编语言编写的代码长5%~20%。编译质量的不同,是区别嵌入式C编译器工具的重要指标。因此,硬件厂商往往会针对自己开发的处理器的特性来定制编译器,既提供对高级语言的支持,又能很好地对目标代码进行优化。
        GNU C/C++(gcc)是目前比较常用的一种交叉编译器,它支持非常多的宿主机/目标机组合。宿主机可以是Unix、AIX、Solaris、Windows、Linux等操作系统,目标机可以是x86、Power PC、MIPS、SPARC、Motorola 68K等各种类型的处理器。
        gcc是一个功能强大的工具集合,包含了预处理器、编译器、汇编器、连接器等组件。它在需要时会去调用这些组件来完成编译任务,而输入文件的类型和传递给gcc的参数决定了它将调用哪些组件。对于一般或初级的开发者,它可以提供简单的使用方式,即只给它提供C源码文件,它将完成预处理、编译、汇编、连接等所有工作,最后生成一个可执行文件。而对于中高级开发者,它提供了足够多的参数,可以让开发者全面控制代码的生成,这对于嵌入式系统软件开发来说是非常重要的。
        gcc识别的文件类型主要包括:C语言文件、C++语言文件、预处理后的C文件、预处理后的C++文件、汇编语言文件、目标文件、静态链接库、动态链接库等。以C程序为例,gcc的编译过程主要分为4个阶段:
        (1)预处理阶段,即完成宏定义和include文件展开等工作;
        (2)根据编译参数进行不同程度的优化,编译成汇编代码;
        (3)用汇编器把上一阶段生成的汇编码进一步生成目标代码;
        (4)用连接器把上一阶段生成的目标代码、其他一些相关的系统目标代码以及系统的库函数连接起来,生成最终的可执行代码。
        用户可以通过设定不同的编译参数,让gcc在编译的不同阶段停止下来,这样可以检查编译器在不同阶段的输出结果。
        在gcc的高级用法上,一般希望通过使用编译器达到两个目的:检查出源程序的错误;生成速度快、代码量小的执行程序。这可以通过设置不同的参数来实现,例如,“-Wall”参数可以发现源程序中隐藏的错误;“-O2”参数可以优化程序的执行速度和代码大小;“-g”参数可以对执行程序进行调试。
   题号导航      2023年上半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第40题    在手机中做本题
    在线人数   共计 4973人 在线 
    hks_1969@1..     zhandl@263..     583033869@..     Joanlodge@..     daiweide51..     binger8203..
    zhuangying..     099804055@..     ZHANGTIN.J..     baoynky@16..     wyunliang7..     guyazhe200..
    sbau1982@1..     630901590@..     liyingxia_..     tjjily@163..     gxnnwy@163..     xingwenqia..
    zywang998@..     xsj430419@..     dxzhendd@1..     hongyongqi..     anshizhang..     hug131@163..
    panjian818..     heweiping2..     38200328@q..     petercheng..     qhfzwjl@16..     yinxianghu..
    qimingxin6..     tangtd2006..     wangqiang1..     zhangxiaol..     tjjily@163..     liangyinke..
    1330553868..     yinchongxi..     toby_top@s..     huoyanfeng..     victor380@..     zhangxiaol..


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2025 All Rights Reserved 软考在线版权所有