1.假定全局short型數組a的起始地址為0x804908c,則a[2]的地址是( )。
B.0x8049094
C.0x8049090
D.0x804908e
2.假定全局數組a的聲明為char *a[8],a的首地址為0x80498c0,i 在ECX中,現要將a[i]取到EAX相應寬度的寄存器中,則所用的匯編指 令是( )。
B.mov (0x80498c0, %ecx), %ah
C.mov 0x80498c0( , %ecx), %ah
D.mov 0x80498c0( , %ecx, 4), %eax
3.假定全局數組a的聲明為double *a[8],a的首地址為0x80498c0,i 在ECX中,現要將a[i]取到EAX相應寬度的寄存器中,則所用的匯編 指令是( )。
B.mov (0x80498c0, %ecx, 8), %eax
C.mov (0x80498c0, %ecx, 4), %eax
D.mov 0x80498c0( , %ecx, 8), %eax
4.假定局部數組a的聲明為int a[4]={0, -1, 300, 20},a的首地址為R[ebp]-16,則將a的首地址取到EDX的匯編指令是( )。
B.leal -16(%ebp, 4), %edx
C.movl -16(%ebp, 4), %edx
D.movl -16(%ebp ), %edx
5.某C語言程序中有以下兩個變量聲明:
int a[10];
int *ptr=&a[0];
則ptr+i的值為( )。
B.&a[0]+8
C.&a[0]+2
D.&a[0]+i
6.假定靜態short型二維數組b的聲明如下:
static short b[2][4]={ {2, 9, -1, 5}, {3, 8, 2, -6}};
若b的首地址為0x8049820,則按行優先存儲方式下,數組元素"8"的地址是( )。
B.0x8049825
C.0x8049824
D.0x8049828
7.假定靜態short型二維數組b和指針數組pb的聲明如下:
static short b[2][4]={ {2, 9, -1, 5}, {3, 1, -6, 2 }};
static short *pb[2]={b[0], b[1]};
若b的首地址為0x8049820,則pb[1]的值是( )。
B.0x8049824
C.0x8049822
D.0x8049828
8.假定靜態short型二維數組b和指針數組pb的聲明如下:
static short b[2][4]={ {2, 9, -1, 5}, {3, 1, -6, 2 }};
static short *pb[2]={b[0], b[1]};
若b的首地址為0x8049820,則&pb[1]的值是( )。
B.0x8049832
C.0x8049830
D.0x8049838
9.假定結構體類型cont_info的聲明如下:
struct cont_info {
char id[8];
char name [16];
unsigned post;
char address[100];
char phone[20];
} ;
若結構體變量x初始化定義為struct cont_info x={"00000010", "ZhangS", 210022, "273 long street, High Building #3015", "12345678"},x的首地址在EDX中,則"unsigned xpost=x.post;"對應匯編指令為( )。
B.movl 0x24(%edx), %eax
C.movl 0x18(%edx), %eax
D.leal 0x18(%edx), %eax
10.以下是關於IA-32處理器對齊方式的敘述,其中錯誤的是( )。
B.不同操作系統采用的對齊策略可能不同
C.對於同一個struct型變量,在不同對齊方式下可能會占用不同大小的存儲區
D.可以用編譯指導語句(如#pragma pack)設置對齊方式