• 计算机系统基础(一):程序的表示、转换与链接(第十一周小测验)


    1.以下是链接过程中对符号定义的判断,其中错误的是( )。

        A.全局变量声明“int x, y;”中,x和y都是符号的定义
        B.静态局部变量声明“static int x=*xp;”中,x是符号的定义
        C.全局变量声明“int *xp=&x;”中,xp和x都是符号的定义
        D.函数内的局部变量声明“short x=200;”中,x不是符号的定义

    2.若x为局部变量,xp、y和z是全局变量,则以下判断中错误的是( )。

        A.赋值语句“int y=x+z;”中,y和z都是符号的引用
        B.赋值语句“y=x+*xp;”中,y和xp都是符号的引用
        C.静态局部变量声明“static int x=*xp;”中,xp是符号的引用
        D.赋值语句“y=x+z;”中,y和z都是符号的引用

    3.以下有关ELF目标文件的符号表的叙述中,错误的是( )。

        A.可重定位和可执行两种目标文件中都有符号表且数据结构一样
        B.符号表定义在.symtab节中,每个表项描述某个符号的相应信息
        C.符号表中包含了所有定义符号的描述信息,包括局部变量的相关信息
        D.通过符号表可获得符号的名称、所在节及在节中偏移地址和长度

    4.以下是有关链接过程中符号解析(符号绑定)的叙述,其中错误的是( )。

        A.全局符号(包括外部全局符号)需将模块内的引用与模块外的定义符号绑定
        B.同一个符号名可能在多个模块中有定义,每个定义处的符号都须分配空间
        C.符号解析的目的是将符号引用与某目标模块中定义的符号建立关联
        D.本地符号的解析比较简单,只要与本模块内定义的符号关联即可

    5.以下有关强符号和弱符号的符号解析的叙述中,错误的是( )。

        A.一个符号名可以有一个强符号和多个弱符号,强符号为其定义
        B.一个符号名只能有一个强符号,否则符号解析失败
        C.一个符号名可以仅出现在引用处或仅出现在定义处
        D.一个符号名可以有多个弱符号,任选一个为其定义

    6.以下是两个源程序文件:

    
    	/*m1.c*/
    	int p1(viod);
    	int main()
    	{
    		int p1= p1();
    		return p1;
    	}
    
    
    	/* m2.c */
    	static int main=1;
    	int p1(
    	{
    		main++;
    		return main;
    	}
    
    对于上述两个源程序文件链接时的符号解析,错误的是( )。
        A.因为出现了两个强符号main,所以会发生链接错误
        B.在m1中,定义了一个强符号main和一个弱符号p1
        C.在m1中,对m2中定义的强符号p1的引用只有一处
        D.在m2中,定义了一个强符号p1和一个局部符号main

    7.以下是两个源程序文件:

    
    	/* m1.c */
    	int p1;
    	int main()
    	{
    		int p1= p1();
    		return p1;
    	}
    
    
    	/* m2.c */
    	int main=1;
    	int p1()
    	{
    		int p1=main++;
    		return main;
    	}
    

    对于上述两个源程序文件链接时的符号解析,错误的是( )。

        A.在模块m1的所有语句中,对符号p1的引用一共有三处
        B.在m1中,定义了一个强符号main和一个弱符号p1
        C.在m2中,定义了一个强符号p1和一个强符号main
        D.因为出现了两个强符号main,所以会发生链接错误

    8.以下是两个源程序文件:

    
    	/* m1.c */
    	int x=100;
    	int p1(viod);
    	int main()
    	{
    		x= p1();
    		return x;
    	}
    
    
    	/* m2.c */
    	float x;
    	static main=1;
    	int p1()
    	{
    		int p1=main + (int) x;
    		return p1;
    	}
    
    } 对于上述两个源程序文件链接时的符号解析,错误的是( )。
        A.虽然x、main和p1都出现了多次定义,但不会发生链接错误
        B.m1中对x的两处引用都与m1中对x的定义绑定
        C.m2中对x的引用与m2中对x的定义绑定
        D.m2中的变量p1与函数p1被分配在不同存储区

    9.以下是两个源程序文件:

    
    	/* m1.c */
    	#include 
    	int x=100;
    	short y=1, z=2;
    	int main()
    	{
    		p1();
    		printf("%x=%d, z=%d
    ", x, z);
    	}
    
    
    	/* m2.c */
    	double x;
    	int p1()
    	{
    		x=-1.0
    	}
    

    上述程序执行的结果是( )。提示:1074790400=230+220,16400=214+24。

        A.x=0, z=-16400
        B.x=-1074790400, z=0
        C.x=-1, z=2
        D.x=100, z=2

    10.假设调用关系如下:func.o→libx.a和liby.a中的函数,libx.a→libz.a中的函数,libx.a和liby.a之间、liby.a和libz.a相互独立,则以下几个命令行中,静态链接发生错误的命令是( )。

        A.gcc -static –o myfunc func.o libx.a libz.a liby.a
        B.gcc -static –o myfunc func.o libx.a liby.a libz.a
        C.gcc -static –o myfunc func.o liby.a libx.a libz.a
        D.gcc -static –o myfunc func.o liby.a libz.a libx.a
  • 相关阅读:
    Java后端工程师的学习技术栈
    ltp 分析 fail testcase
    程序员这个职业需要具备的素养
    你真的愿意到了50岁还要做编程吗?
    程序员的学习和积累
    程序员写博客的缘由
    VS2010生成文件
    从菜鸟到专家的五步编程语言学习法
    程序设计的18大原则
    怎样的代码才算是干净的代码?
  • 原文地址:https://www.cnblogs.com/nonlinearthink/p/11923351.html
Copyright © 2020-2023  润新知