. . .. ..
若x=2,y=3,则x&y的结果是()
所选答案: 正确答案:
A. 0 D. 2
得 10 分,满分 10 分
问题 2
linux下标准的链接器是[x]
x 的指定答案:
ld
x 的正确答案: ld
问题 3 得 10 分,满分 10 分
Linux 是一个运行在[x]下的 32/64 位操作系统。
所选答案: 正确答案:
Linux 是一个运行在 保护模式下的 32/64 位操作系统。 Linux 是一个运行在 保护模式下的 32/64 位操作系统。
得 10 分,满分 10 分
问题 4
在指令leal 8(ìx,íx,4),êx中,假设ECX的内容是x,EDX的内容是y,则该指令实现的功能是计算[x]的值,并将其存入寄存器[y]中。
x 的指定答案: y 的指定答案:
x 的正确答案: x+4y+8
x+4*y+8
y 的正确答案: EAX
eax
x+4y+8 eax
问题 5
在32位机器上,表达式~0x13值是( )
所选答案: 正确答案:
得 0 分,满分 10 分
D. 0xFFFFFFFC B. 0xFFFFFFEC
问题 6 得 10 分,满分 10 分
假设:sizeof(int)=4, 声明int a[10],数组a的首地址在寄存器ecx中,数组下标i存放在edx中,表达式的结果存在eax中,则表达式a[i]对应的汇编代码是()
所选答案:
B. movl (ìx,íx,4),êx
v. .. . ..
. . .. ..
正确答案:
B. movl (ìx,íx,4),êx
得 5 分,满分 10 分
问题 7 已知汇编,补充完整对应的C代码(填空的各个符号之间不要加空格)。 c:
pushl ?p movl %esp, ?p subl $16, %esp movl $0, -8(?p) movl $0, -4(?p) jmp .L4 .L5:
movl 8(?p), êx imull -8(?p), êx addl 12(?p), êx movl êx, -4(?p) addl $1, -8(?p) .L4:
cmpl $29, -8(?p) jle .L5
movl -4(?p), êx leave ret
对应的C代码: int c(int x, int y) {
int i=0,result=0; while([1]) {
result=[2]; i++; }
return result; }
1 的指定答案: i<=29 2 的指定答案:
result+x*i
v. ..
. ..
. . .. ..
1 的正确答案: i<30
i<=29
2 的正确答案: x*i+y
i*x+y y+x*i y+i*x
问题 8 得 10 分,满分 10 分
假设:sizeof(int)=4, 声明int a[10],数组a的首地址在寄存器ecx中,数组下标i存放在edx中,表达式的结果存在eax中,则表达式a[0]对应的汇编代码是()
所选答案: 正确答案:
A. movl (ìx), êx A. movl (ìx), êx
问题 9
gdb下继续程序运行,直到下一个断点的命令是[x]
x 的指定答案:
x 的正确答案: continue
c
得 0 分,满分 10 分
n
问题 10 得 10 分,满分 10 分
Linux 平台的标准汇编器是 [x],汇编命令是[y]。
x 的指定答案: y 的指定答案:
x 的正确答案: GAS
gas
y 的正确答案: as
gas as
问题 11 得 0 分,满分 10 分
所谓“机器字长”通常是指CPU内部用于整数运算的数据通路的宽度,因此“字长”等于CPU内部用于整数运算的运算器位数和通用寄存器宽度。
所选答案: 错 正确答案: 对
问题 12 得 10 分,满分 10 分
C语言中允许无符号整数和带符号整数之间的转换,转换前后的机
器数发生了改变。
v. .. . ..
. . .. ..
所选答案: 否 正确答案: 否
问题 13
以下C语言源码: int get(int *p1,int *p2) {
if(p1>p2) return *p2; else
return *p1; }
请补充对应的汇编代码: get:
pushl ?p movl %esp, ?p movl 8(?p), íx movl 12(?p), êx [1] [2] [3] [4] .L2:
movl (íx), êx .L4:
popl ?p ret
所选答案: 以下C语言源码:
int get(int *p1,int *p2) {
if(p1>p2) return *p2; else
return *p1; }
请补充对应的汇编代码: get:
pushl ?p movl %esp, ?p
v. ..
得 10 分,满分 10 分
. ..
. . .. ..
movl 8(?p), íx movl 12(?p), êx
cmpl êx, íx jbe .L2
movl (êx), êx jmp .L4
.L2:
movl (íx), êx .L4:
popl ?p ret
正确答案: 以下C语言源码:
int get(int *p1,int *p2) {
if(p1>p2) return *p2; else
return *p1; }
请补充对应的汇编代码: get:
pushl ?p movl %esp, ?p movl 8(?p), íx movl 12(?p), êx
cmpl êx, íx jbe .L2
movl (êx), êx jmp .L4
.L2:
movl (íx), êx .L4:
popl ?p ret
问题 14
gdb下运行程序的命令是[x]
x 的指定答案:
run
得 10 分,满分 10 分
x 的正确答案: r
v. .. . ..