单项选择题

以下是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