单项选择题
以下是C语言赋值语句“x=a*b+c;”对应的x86-64汇编代码:
movslq %edx,%rdx
movsbl %sil,%esi
imull %edi,%esi
movslq %esi,%rsi
leaq (%rdx,%rsi),%rax
已知x、a、b和c分别在RAX、RDI、RSI和RDX对应宽度的寄存器中,根据上述汇编指令序列,推测x、a、b和c的数据类型分别为()。
A.x—long,a—long,b—char,c—long
B.x—long,a—int,b—char,c—int
C.x—long,a—long,b—char,c—int
D.x—long,a—int,b—char,c—long
点击查看答案
相关考题
-
单项选择题
假定变量x的类型为long,对于变量y的初始化声明“int y=(int)x;”,其对应的汇编指令不可能是()。
A.movsql %rdx,%eax
B.movzlq %edx,%rax
C.movl %edx,%eax
D.movslq %edx,%rax -
单项选择题
假定变量x的类型为int,对于变量y的初始化声明“long y=(long)x;”,其对应的汇编指令是()。
A.movzlq %edx,%rax
B.movq %rdx,%rax
C.movl %edx,%eax
D.movslq %edx,%rax -
单项选择题
以下有关x86-64传送指令的叙述中,错误的是()。
A.movl相当于movzlq,能将目的寄存器高32位清0
B.pushq和popq分别对ESP寄存器减8和加8
C.相比IA-32,增加了movq指令,可传送64位数据
D.movzbq的功能是将8位寄存器内容零扩展为64位
