計算機系統基礎(一):程序的表示、轉換與鏈接(第九周小測驗)


1.以下有關IA-32和x86-64之間比較的敘述中,錯誤的是( )。

     A.IA-32的通用寄存器為8/16/32位,而x86-64的通用寄存器為8/16/32/64位
     B.(unsigned) long型變量在IA-32和x86-64中的長度都是64位(四字)
     C.IA-32的通用寄存器有8個,而x86-64的通用寄存器有16個
     D.IA-32的字長為32位,x86-64的字長為64位並兼容IA-32

2.以下有關x86-64寄存器的敘述中,錯誤的是( )。

     A.128位的XMM寄存器從原來IA-32中的8個增加到16個
     B.用來存放將要執行的指令的地址的指令指針寄存器為64位的RIP
     C.任何浮點操作數都被分配在浮點寄存器棧(ST(0)~ST(7))中
     D.基址寄存器和編址寄存器都可以是任意一個64位的通用寄存器

3.以下有關x86-64對齊方式的敘述中,錯誤的是( )。

     A.int、float型數據必須按4字節邊界對齊
     B.long double型數據在內存占12字節空間(96位)
     C.short型數據必須按2字節邊界對齊
     D.long、double、指針型數據必須按8字節邊界對齊

4.以下有關x86-64傳送指令的敘述中,錯誤的是( )。

     A.相比IA-32,增加了movq指令,可傳送64位數據
     B.movl相當於movzlq,能將目的寄存器高32位清0
     C.movzbq的功能是將8位寄存器內容零擴展為64位
     D.pushq和popq分別對ESP寄存器減8和加8

5.假定變量x的類型為int,對於變量y的初始化聲明“long y=(long) x;”,其對應的匯編指令是( )。

     A.movq %rdx, %rax
     B.movslq %edx, %rax
     C.movl %edx, %eax
     D.movzlq %edx, %rax

6.假定變量x的類型為long,對於變量y的初始化聲明“int y=(int) x;”,其對應的匯編指令不可能是( )。

     A.movslq %edx, %rax
     B.movsql %rdx, %eax
     C.movl %edx, %eax
     D.movzlq %edx, %rax2

7.以下是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—int, b—char, c—long
     D.x—long, a—long, b—char, c—int

8.假定long型變量t、int型變量x和short型變量y分別在RAX、RDI和RSI對應寬度寄存器中,C語言賦值語句“t=(long)(x+y);”對應的x86-64匯編指令序列不可能是( )。

     A. movswq %si, %rax
      movslq %edi, %rdx
      addq %rdx, %rax

     B. movswl %si, %edx
      addl %edi, %edx
      movslq %edx, %rax

     C. movswq %si, %rsi
      movslq %edi, %rdi
      leaq (%rsi, %rdi), %rax

     D. movswq %si, %rdx
      leaq (%rdx, %rdi), %rax

9.以下關於x86-64過程調用的敘述中,錯誤的是( )。

     A.前6個參數采用通用寄存器傳遞,其余參數通過棧傳遞
     B.在通用寄存器中傳遞的參數,都存放在64位寄存器中
     C.在棧中的參數若是基本類型,則被分配8個字節空間
     D.返回參數存放在RAX相應寬度的寄存器中

10.以下關於IA-32和x86-64指令系統比較的敘述中,錯誤的是( )。

     A.對於返回地址,x86-64使用通用寄存器保存,而IA-32使用棧來保存
     B.對於入口參數,x86-64可用通用寄存器傳遞,而IA-32需用棧來傳遞
     C.對於64位數據,x86-64可用一條指令處理,而IA-32需多條指令處理
     D.對於浮點操作數,x86-64存於128位的XMM中,而IA-32存於80位的ST(i)中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM