第五周课下测试(ch03)补交

1、( 多选题 | 1 分)

有关gdb调试汇编,下面说法正确的是()

  • A .

    可以用disas反汇编当前函数
  • B .

    以16进制形式打印%rax中内容的命令是 print /x $rax
  • C .

    可以用info registers查看所有寄存器的值
  • D .

    可以用info frame 查看所有栈帧的信息
  • E .

    可以使用up,down切换栈帧
ABCE
书P194
A:disas 反汇编当前函数
B:print /x $rax 以十六进制输出%rax的内容
C:info registers查看所有寄存器的值
D:info frame查看有关当前栈帧的信息,并非所有栈帧的信息,故不对
E:使用 up down ,跳转不同堆栈,查询其中的堆栈简要信息

2、( 多选题 | 1 分)

x86-64 Linux汇编中,构建栈帧的语句是( )

  • A .

    movq %rbp, %rsp

    popq %rbp

  • B .

    enter

  • C .

    leave

  • D .

    pushq %rbp

    movq %rsp, %rbp

BD
enter等价于
pushq %rbp
movq %rsp, %rbp

3、( 多选题 | 1 分)

Linux汇编中,销毁栈帧的语句是( )

  • A .

    movq %rbp, %rsp

    popq %rbp
  • B .

    leave
  • C .

    enter
  • D .

    pushq %rbp

    movq %rsp, %rbp
AB
leave等价于:
movq %rbp, %rsp
popq %rbp

4、函数调用过程中,栈用来( )

  • A .

    传递参数
  • B .

    存储返回信息
  • C .

    保存寄存器
  • D .

    局部存储
ABCD
书P164
A:“用栈来管理他的过程所需要的存储空间,栈和程序寄存器存放着传递控制和数据、分配内存所需要的信息”即传递参数
B:“当前正在执行的过程的帧总是在栈顶。当过程P调用过程Q时,会把返回地址压入栈中”即存储返回信息
C:“Q的代码会扩展当前栈的边界,分配她的栈帧所需的空间。在这个空间中,他可以保存寄存器的值,分配局部变量空间”即保存寄存器
D:“为了提高空间和时间效率,x86-64过程只分配自己所需要的栈帧部分”即局部存储

5、( 多选题 | 1 分)

有关C语言的控制语句和汇编指令的关系说法正确的是()

  • A .

    可以使用汇编的有条件和无条件跳转来实现C语言的条件分支
  • B .

    可以使用数据的条件转移来实现C语言的条件分支
  • C .

    可以使用数据的条件转移来实现C语言的循环
  • D .

    可以使用条件测试和跳转组合起来实现循环

    正确答案: A B D 你的答案: 未作答
ABD
A:举例gotodiff_se函数
B:P145 3·6·6一种代替的策略就是使用数据的条件转移,来实现条件分支
C、D:汇编中没有循环结构的指令可以用条件测试和跳转组合来实现循环的效果,故选D

6、( 多选题 | 1 分)

下面的跳转指令与ZF有关的是()

  • A .

    jmp
  • B .

    je
  • C .

    js
  • D .

    ja
  • E .

    jb
  • F .

    jbe
BDF
见P1391图3-15

7、( 多选题 | 1 分)

假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()

  • A .

    若t==0 ,则ZF=1
  • B .

    若t<0, 则CF=1
  • C .

    若t<0, 则SF=1
  • D .

    若(a<0==b<0)&&(t<0 != a<0), 则OF=1
  • E .

    若(a<0==b<0)&&(t<0 != a<0), 则CF=1
  • F .

    leaq指令不影响条件码寄存器
  • G .

    cmp指令不影响条件码寄存器
ADF
ZF:零标志。最近的操作得出的结果为0,故当t==0,ZF=1,A对
CF:进位标志。最近的操作使最高位产生了进位。B E不对
SF:符号标志。最近的操作得到的结果为负数。
[所以为啥不选C啊?????]
OF:溢出标志。最近的操作导致一个补码溢出——正溢出或负溢出。(a<0==b<0)&&(t<0!=a<0) 有符号溢出,故选D
leaq指令不改变任何条件码,选F
CMP指令根据两个操作数之差来设置条件码。除了只设置条件码而不更新目的寄存器之外,与SUB指令的行为是一样的。

8、有关移位指令,下面说法正确的是()

  • A .

    SAL和SHL效果一样
  • B .

    移位量只能是一个立即数
  • C .

    移位量可以放在%cl中
  • D .

    移位量可以放在%cx中
  • E .

    SAR和SHR效果一样
AC
A:左移指令有俩个名字:SAL和SHL效果一样。
B、C、D:移位量可以是一个立即数,或者放在单字节寄存器%cl中。
E:右移指令不同,SAR执行算术移位,SHR执行逻辑移位

9、( 多选题 | 1 分)

对于下面的值,有关算术运算的指令正确的是()

Image 1.png

  • A .

    addq %rcx,(%rax), 目的地址是0x100
  • B .

    addq %rcx,(%rax), 目的地址的内容是0x100
  • C .

    subq %rdx, 8(%rax) 的值是0xA8
  • D .

    incq 16(%rax)值是12
ABC
我参考了这篇[部落格](http://blog.csdn.net/qq_35524916/article/details/61421411)

10、( 多选题 | 1 分)

假设%rax中的值为x, %rcx中的值为y,关于leaq指令,下面正确的()

  • A .

    leaq 6(%rax), %rdx; %rdx中值为6+x
  • B .

    leaq 6(%rax), %rdx; %rdx中值为6x
  • C .

    leaq 7(%rax, %rax,8), %rdx; %rdx中值为9x
  • D .

    leaq 7(%rax, %rax,8), %rdx; %rdx中值为63x
  • E .

    leaq 7(%rax, %rax,8), %rdx; %rdx中值为15x
我参考了这篇[部落格](http://blog.csdn.net/swordmanwk/article/details/41169953)

11、以下代码是将void decode1(long *xp, long *yp, long *zp)反汇编的结果,下面说法正确的是()

Image 6.png

  • A .

    从汇编代码看出,decode1的参数先入栈的是zp

  • B .

    从汇编代码看出,decode1的参数先入栈的是xp

  • C .

    函数功能等价于 t=x; x=y; y=z; z=t;

  • D .

    函数功能等价于 x=y; y=z; z=x;

C
xp、yp和zp分别存储在对应的寄存器%rdi、%rsi和%rdx中。

12、( 单选题 | 1 分)

x86-64 Linux中,函数调用的返回值存在()寄存器中。

  • A .

    %rax
  • B .

    %rbx
  • C .

    %rcx
  • D .

    %rsp
  • E .

    %rbp
书P120第一行

13、( 单选题 | 1 分)

x86-64 Linux中,%rsp的值为0x108, pushq %eax后,%rsp的值为()

  • A .

    0x100
  • B .

    0x108
  • C .

    0x110
  • D .

    0x118
p128: pushq  %rsp-8

14、( 单选题 | 1 分)

x86-64 Linux中,%rbp的值为0x108, pushq %eax后,%rbp的值为()

  • A .

    0x100
  • B .

    0x108
  • C .

    0x110
  • D .

    0x118
p128,push不影响%rbp的值。

15、x86-64 Linux中,有关MOV,下面正确的是()

  • A .

    movw $0x50, %eax
  • B .

    movw %bp, %sp
  • C .

    movl ($1234), ($2345)
  • D .

    movb $10, (%rsp)
  • E .

    movq %rax, 4(%rbp)
  • F .

    movb (%rdi, %rcx), %ah
p122 ,p123, 注意内存之间不能直接mov,要用寄存器中转。b,w,l,q表示的长度要和寄存器匹配。

16、对于图中内存地址和寄存器的值,下面说法正确的是()

Image 5.png

  • A .

    %rax的值是0x100
  • B .

    (%rax)的值是0x100
  • C .

    (%rax)的值是0x104
  • D .

    (%rax)的值是0xFF
  • E .

    4(%rax)的值是0xAB
  • F .

    (%rax,%rcx,4)的值是0xAB
  • G .

    (%rax,%rcx,4)的值是0x104
ADEF
%rax :返回值
%rcx:第四个参数
%rdx:第三个参数

17、x86-64 Linux中,操作数的类型有()

  • A .

    立即数
  • B .

    寄存器
  • C .

    内存引用
  • D .

    IO引用
ABC
书P121
“各种不同的操作数被分为三种类型:立即数,寄存器,内存引用”

18、( 单选题 | 1 分)

x86-64中,()寄存器用来保存运行时栈的结束位置(栈顶)

  • A .

    %rax
  • B .

    %rbx
  • C .

    %rbp
  • D .

    %rsp
D
书P120
"其中最特别的是栈指针%rsp,用来指明运行时栈的结束位置"

19、( 单选题 | 1 分)

movl一次传送()字节的数据

  • A .

    1
  • B .

    2
  • C .

    4
  • D .

    8
C
书P119
“movl(传送双字)”即传送4字节

20、( 单选题 | 1 分)

x86-64 Linux中,push %rbx对应的机器码是()

  • A .

    0x53
  • B .

    0xd38948
  • C .

    0x4889d3
  • D .

    0x5b
A
书P115
下方代码

21、( 单选题 | 1 分)

x86-64中指令长度是()字节

  • A .

    1
  • B .

    2
  • C .

    4
  • D .

    1-4
  • E .

    1-8
  • F .

    1-15
  • G .

    1-16
  • H .

    以上都不对
F
书P116
“x86-64的指令长度从1到15个字节不等”

22、( 单选题 | 1 分)

X86-64中虚拟地址的数量目前是()个

  • A .

    2^16
  • B .

    2^32
  • C .

    2^48
  • D .

    2^64
C
书P114
“在目前的实现中,这些地址的高16位必须设置为0,所以一个地址实际上能够指定的是2^48或64TB范围内的一个字节”

23、( 单选题 | 1 分)

要实现c中的if,while所需的条件变化,需要()寄存器中的信息。

  • A .

    通用
  • B .

    向量
  • C .

    条件码
  • D .

    整数
C
书p114
“条件码寄存器保存着最近执行的算数或逻辑指令的状态信息。他们用来实现控制或数据流中的条件变化,比如说用来实现if和while语句”

24、( 单选题 | 1 分)

程序计数器(PC) 指示将要执行的下一条指令在内存中的地址,X86-64中,PC指()

  • A .

    %rsp
  • B .

    %rip
  • C .

    %rbp
  • D .

    %rax
B
书P113
“程序计数器(通常成为“PC”,在x86-64中用%rip表示)给出将要执行的下一条指令在内存中的地址”

25、( 单选题 | 1 分)

Linux中,对目标代码code.o进行反汇编的命令是()

  • A .

    gcc -c code.o
  • B .

    asm code.o
  • C .

    od code.o
  • D .

    objdump -d code.o
D
书P115
“在Linux系统中,带‘-d’命令行标志的程序OBJDUMP(表示“object dump”)可以充当这个角色:linux> objdump -d mstore.o”

26、( 多选题 | 1 分)

对于机器级编程,要深入理解两种抽象()

  • A .

    ISA
  • B .

    进程
  • C .

    文件
  • D .

    虚拟地址
AD
书P113
“对于机器级编程来说,其中两种抽象尤为重要。第一种是有指令集体系结构或指令集结构(ISA)来定义的机器级程序的格式和行为第二种抽象是机器级程序使用的内存地址是虚拟地址”

27、( 单选题 | 1 分)

Intel的处理模型中()首次引入超线程技术。

  • A .

    Pentium III
  • B .

    Pentium 4
  • C .

    Pentium 4E
  • D .

    Core 2
C
书P111
“Pentium 4E,增加了超线程技术”

28、( 单选题 | 1 分)

Intel的处理模型中()首次将体系结构扩展到32位,增加了平坦寻址模式。

  • A .

    8087
  • B .

    80286
  • C .

    i386
  • D .

    i486
C
书P111
“i386.将体系结构扩展到32位”

# 第五周课下测试(ch03)补交的更多相关文章

  1. 20155211课下测试ch10补交

    20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...

  2. 2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd

    2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; ...

  3. 课下测试CH01补交

    课下测试CH01补交 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. A . 正确 B . 错误 正确答案: B 你的答案: 未作答 ...

  4. 第八周课上测试ch03

    测试-1-ch03 任务详情 通过输入gcc -S -o main.s main.c,将下面c程序"week04学号.c"编译成汇编代码 int g(int x){ return ...

  5. 课下测试补交(ch03 ch08)

    课下测试补交(ch03 ch08) 课下测试 ch03 1.有关gdb调试汇编,下面说法正确的是(ABCE) A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 ...

  6. 第七周 ch04 课下测试补交

    2017-2018-1 20155335 <信息安全系统设计基础>第7周 课下测试博客 本人不慎忘记去交dao'zhi 测试题目: SEQ+对SEQ的改变有() A . PC的计算挪到取指 ...

  7. # 课下测试补交(ch01)20155337

    课下测试补交(ch01) 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对 ...

  8. 课下测试补交(ch01、ch02、ch07)

    课下测试补交(ch01.ch02.ch07) 课下测试ch01 1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比.(B) A . 正确 B . 错误 解析:课本 ...

  9. 课下测试ch01修改补交

    由于当时学习态度有问题,没有注意到第一次的课下测试,虽然在当周的总结中就进行补交,但是当时态度并没有很认真,可能没有引起老师的注意,现在重新修改,望老师谅解. (单选题 | 1 分) Amdahl定律 ...

随机推荐

  1. Linux命令--用户管理

    useradd命令 Linux useradd命令用于建立用户帐号. useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号.使用useradd指 ...

  2. apt安装mysql

    使用 APT 安装 MySQL 参考官方文档 apt-get install mysql-server 这将安装MySQL服务器的包,以及客户端和数据库公共文件的包. 在安装过程中,系统会要求您为ro ...

  3. yum安装工具的理解

    在安装gtk+编译环境的过程中,你会发现,RPM软件包之间的依赖关系非常复杂.在实际管理过程中,这种依赖关系可能会更加复杂.因此非常有必要寻找一种自动化安装工具,让安装工具自己处理这些关系复杂的依赖关 ...

  4. 随手练——洛谷-P1008 / P1618 三连击(暴力搜索)

    1.普通版 第一眼看到这个题,我脑海里就是,“我们是不是在哪里见过~”,去年大一刚学C语言的时候写过一个类似的题目,写了九重循环....就像这样(在洛谷题解里看到一位兄台写的....超长警告,慎重点开 ...

  5. 【JavaScript】富文本编辑器

    这是js写的富文本编辑器,还存在一些bug,但基本功能已经实现,通过这个练习,巩固了js富文本编辑方面的知识,里面包含颜色选择器.全屏.表情.上传图片等功能,每个功能实际对应的就是一个小插件啦 部分程 ...

  6. 【vue】饿了么项目-页面骨架开发

    1.页面骨架开发 1.1组件拆分 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没 ...

  7. rabbitmq关于guest用户登录失败解决方法

    刚安装完rabbitmq,登录的时候出现了: login  failed问题: 查看rabbitmq的文档,发现在3.3.1以后的版中,处于安全的考虑,guest这个默认的用户只能通过localhos ...

  8. .gitignore设置不生效

    .gitignore git中,如果想要让git忽略某些文件,或不想push到远程库,不让其受版本的控制.可以使用git提供的.gitignore文件进行配置.像这样: 一般情况下,在文件还未修改前, ...

  9. vim内替换文件内容

    几个常用的方法如下: :%s/foo/bar/g 把全部foo替换为bar,全局替换 :s/foo/bar/g 当前行替换foo为bar :%s/foo/bar/gc 替换每个foo为bar,但需要确 ...

  10. 安装ubuntu 18.04总结

    今天开发组的一个妹子同事想把系统换成ubuntu的,过来找我,给装完后,做个总结..... 以下开始操作 环境:小米air ,系统win10,cpu intel_m3 一)下载ubuntu 的镜像 h ...