某C语言程序中对数组变量b的声明为“int b[10][5];”,有for语句如下:for(i=0;i<10;i++)for(j=0;j<5;j++)sum+=b[i][j];假设执行到sum+=b[i][j]时,sum的值在EAX中,b[i][0]所在的地址在EDX中,j在ESI中,则sum+=b[i][j]所对应的指令(AT&T格式)可以是()。
A. addl 0(%edx,%esi,4),%eax
B. addl 0(%esi,%edx,4),%eax
C. addl 0(%edx,%esi,2),%eax
D. addl 0(%esi,%edx,2),%eax
查看答案
IA-32中指令“popl %ebp”的功能是()。
A. R[esp]<- R[esp]-4, M[R[esp]]<-R[ebp]
B. R[esp]<- R[esp]+4, M[R[esp]]<-R[ebp]
C. M[R[esp]]<-R[ebp],R[esp]<- R[esp]-4
D. M[R[esp]]<-R[ebp],R[esp]<- R[esp]+4
IA-32中指令“movl 8(%edx,%esi,4),%edx”的功能是()。
A. M[R[edx]+R[esi]*4+8]<-R[edx]
B. M[R[esi]+R[edx]*4+8]<-R[edx]
C. R[edx]<-M[R[edx]+R[esi]*4+8]
D. R[edx]<-M[R[esi]+R[edx]*4+8]
IA-32中指令“leal 8(%edx,%esi,4),%edx”的功能是()。
A. R[edx]+R[esi]*4+8<-R[edx]
B. R[esi]+R[edx]*4+8<-R[edx]
C. R[edx]<-R[edx]+R[esi]*4+8
D. R[edx]<-R[esi]+R[edx]*4+8
设SignExt[x]表示对x符号扩展,ZeroExt[x]表示对x零扩展。IA-32中指令“movswl %cx,-20(%ebp)”的功能是()。
A. M[R[ebp]-20]<- SignExt[R[cx]]
B. R[cx]<- SignExt[M[R[ebp]-20]]
C. M[R[ebp]-20]<- ZeroExt[R[cx]]
D. R[cx]<-ZeroExt[M[R[ebp]-20]