




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、習題.參考答案:(1)后綴:w,源:基址+比例變址瑜移,目寄存器(2)后綴b,源:寄存器,目基址+偏移(3)后綴l,源:比例變址,目寄存器(4)后綴b,源:基址,目寄存器(5)后綴l,源:立即數(shù),目棧(6)后綴l,源:立即數(shù),目寄存器后綴w,源:寄存器,目寄存器(8)后綴l,源:基址建址+偏移,目寄存器.參考答案:(1)源操作數(shù)是立即數(shù)0 xFF,需在前面加$(2)源操作數(shù)是16位,而長度后綴是字節(jié)b,不一致(3)目的操作數(shù)不能是立即數(shù)尋址(4)操作數(shù)位數(shù)超過16位,而長度后綴為16位的w(5)不能用8位寄存器作為目的操作數(shù)地址所在寄存器(6)源操作數(shù)寄存器與目操作數(shù)寄存器長度不一致(7)不存
2、在ESX寄存器(8)源操作數(shù)地址中缺少變址寄存器.參考答案:表題5用表src_typedst_type機器級表示charintmovsbl%al,(%edx)intcharmovb%al,(%edx)intunsignedmovl%eax,(%edx)shortintmovswl%ax,(%edx)unsignedcharunsignedmovzbl%al,(%edx)charunsignedmovsbl%al,(%edx)intintmovl%eax,(%edx).參考答案:xptr、yptr和zptr對應實參所存放的存儲單元地址分別為:Rebp+8、Rebp+12、Rebp+16。(2)函
3、數(shù)func的C語言代碼如下:voidfunc(int*xptr,int*yptr,int*zptr)inttempx=*xptr;inttempy=*yptr;inttempz=*zptr;*yptr=tempx;*zptr=tempy;*xptr=tempz;.參考答案:Redx=xRedx=x+y+4Redx=x+8*yRedx=y+2*x+12Redx=4*yRedx=x+y.參考答案:(1)指令功能為:RedxRedx+MReax=0 x00000080+M0 x8049300,寄存器EDX中內(nèi)容改變。改變后的內(nèi)容為以下運算的結果:00000080H+FFFFFFF0H00000000
4、000000000000000010000000+11111111111111111111111111110000100000000000000000000000001110000因此,EDX中的內(nèi)容改變?yōu)? x00000070。根據(jù)表可知,加法指令會影響ORSF、ZF和CF標志。OF=QZF=0,SF=0,CF=1。(2)指令功能為:RecxRecx-MReax+Rebx=0 x00000010+M0 x8049400,寄存器ECX中內(nèi)容改變。改變后的內(nèi)容為以下運算的結果:00000010H-H00000000000000000000000000010000+0111111111111111
5、1111111111111000010000000000000000000000000001000因此,ECX中的內(nèi)容改為0 x。根據(jù)表可知,減法指令會影響OF、SF、ZF和CF標志。OF=1,ZF=0,SF=1,CF=1?0=1。(3)指令功能為:Rbx-RbxorMReax+Recx*8+4,寄存器BX中內(nèi)容改變。改變后的內(nèi)容為以下運算的結果:0 x0100orM0 x8049384=0100HorFF00H0000000100000000o11111111000000001111111100000000因此,BX中的內(nèi)容改為0 xFF00。由節(jié)可知,OR指令執(zhí)行后OF=CF=0因為結果不
6、為0,故ZF=0;因為最高位為1,故SF=1otest指令不改變?nèi)魏瓮ㄓ眉拇嫫?,但根?jù)以下“與操作改變標志:Rdland0 x8010000000and1000000010000000由節(jié)可知,TEST指令執(zhí)行后OF=CF=0因為結果不為0,故ZF=0;因為最高位為1,故SF=1。(5)指令功能為:MReax+Redx-MReax+Redx*32,即存儲單元0 x8049380中的內(nèi)容改變?yōu)橐韵逻\算的結果:M0 x8049380*32=0 x908f12a8*32,也即只要將0 x908f12a8左移5位即可得到結果。100100001000111100010010101010005=0001
7、0001111000100101010100000000因此,指令執(zhí)行后,單元0 x8049380中的內(nèi)容改變?yōu)? x11e25500。顯然,這個結果是溢出的。但是,根據(jù)表可知,乘法指令不影響標志位,也即并不會使OF=1o(6)指令功能為:Rcx-Rcx-1,即CX寄存器的內(nèi)容減一。0000000000010000+111111111111111110000000000001111因此,指令執(zhí)行后CX中的內(nèi)容從0 x0010變?yōu)? x000F。由表可知,DEC指令會影響ORZF、SF,根據(jù)上述運算結果,得到OF=QZF=0,SF=0o.參考答案:movl12(%ebp),%ecx11執(zhí)行5te
8、stb$0 x80,%dl11執(zhí)行7addb%dl,(%eax)1:因為C語言if語句中的條件表達式可以對多個條件進行邏輯運算,而匯編代碼中一條指令只能進行一種邏輯運算,并且在每條邏輯運算指令生成的標志都是存放在同一個EFLAGSW存器中,所以,最好在一條邏輯指令后跟一條條件車t移指令,把EFLAG計標志用完,然后再執(zhí)行另一次邏輯判斷并根據(jù)條件進行轉移的操作。(2)按照書中圖給出的“if()goto”語句形式寫出匯編代碼對應的C語言代碼如下:voidcomp(charx,int*p)if(p!=0)if(x0)*p+=x;.參考答案:intfunc(intx,inty)intz=x*y; TO
9、C o 1-5 h z if(xx)z=x+y;elsez=x-y;elseif(x=16)z=x&y;returnz;.參考答案:(1)每個入口參數(shù)都要按4字節(jié)邊界對齊,因此,參數(shù)x、y和k入棧時都占4個字節(jié)。1 movw 8(%ebp), %bx5 movw %si, %dx13 cmpw %cx, %si15 .L2:16 movswl %bx, %eax返回0。16.參考答案:1:2211& 0 x1 ,因此 f1用于檢測x的奇偶性,當x中有奇數(shù)個1,則返回為1,否則函數(shù)sw只有一個入口參數(shù)x,根據(jù)匯編代碼的第25行指令知,當x+37時轉標號.L7處執(zhí)行,否則,按照跳轉表中的地址轉移執(zhí)
10、行,x 與跳轉目標處標號的關系如下:x+3=0:x+3=1:x+3=2:x+3=3:x+3=4:x+3=5:x+3=6:x+3=7:由此可知,.L7.L2.L2.L3.L4.L5.L7.L6switch (x)中省略的處理部分結構如下:case -2:case -1:2 標號處指令序列對應的語句break;case 0:3標號處指令序列對應的語句break;.4標號處指令序列對應的語句break;5標號處指令序列對應的語句break;case4:6標號處指令序列對應的語句break;default:7標號處指令序列對應的語句參考答案:根據(jù)第2、3行指令可知,參數(shù)a是char型,參數(shù)p是指向sh
11、ort型變量的指針;根據(jù)第4、5行指令可知,參數(shù)b和c都是unsignedshort型,根據(jù)第6行指令可知,test的返回參數(shù)類型為unsignedint。因此,test的原型為:unsignedinttest(chara,unsignedshortb,unsignedshortc,short*p);參考答案:每次執(zhí)行pushl指令后,Resp=Resp-4,因此,第2行指令執(zhí)行后Resp=0 xbc00001c。(1)執(zhí)行第3行指令后,Rebp=Resp=0 xbc00001c。到第12條指令執(zhí)行結束都沒有改變EBP的內(nèi)容,因而執(zhí)行第10行指令后,EBP的內(nèi)容還是為0 xbc00001c。執(zhí)
12、行第13行指令后,EBP的內(nèi)容恢復為進入函數(shù)funct時的值0 xbc000030。(2)執(zhí)行第3行指令后,Resp=0 xbc00001c。執(zhí)行第4行指令后Resp=Resp-40=0 xbc00001c-0 x28=0 xbbfffff4。因而執(zhí)行第10行指令后,未跳轉到scanf函數(shù)執(zhí)行時,ESP中的內(nèi)容為0 xbbfffff4-4=0 xbbfffff0;在從scanf函數(shù)返回后ESP中的內(nèi)容為0 xbbfffff4。執(zhí)行第13行指令后,ESP的內(nèi)容恢復為進入函數(shù)funct時的舊值,即Resp=0 xbc000020。(3)第5、6兩行指令將scanf的第三個參數(shù)&y入棧,入棧的內(nèi)容為
13、Rebp-8=0 xbc000014;第7、8兩行指令將scanf的第二個參數(shù)&x入棧,入棧的內(nèi)容為Rebp-4=0 xbc000018。故x和y所在的地址分別為0 xbc000018和0 xbc000014。(4)執(zhí)行第10行指令后,funct棧幀的地址范圍及其內(nèi)容如下:0 xbc00001c0 xbc0000300 xbc000018x=150 xbc000014y=200 xbc0000100 xbc00000c0 xbc0000080 xbc0000040 xbc0000000 xbbfffff0 xbc0000140 xbbfffff0 xbc0000180 xbbfffff0 x8
14、04c0000 xbbfffff從scanf返回的地EBpEBP棧幀底部ESP.參考答案:第1行匯編指令說明參數(shù)x存放在EBX中,根據(jù)第4行判斷x=0則轉.L2,否則繼續(xù)執(zhí)行第510行指令。根據(jù)第5、6、7行指令可知,入棧參數(shù)nx的計算公式為x1;根據(jù)第9、10、11行指令可知,返回值為(x&1)+rv。由此推斷出C缺失部分如下:intrefunc(unsignedx)if(x=0) TOC o 1-5 h z return0;unsignednx=x1;intrv=refunc(nx);return(x&0 x1)+rv;7該函數(shù)的功能為計算x的各個數(shù)位中1的個數(shù)。.參考答案:在IA-32中
15、,GCa數(shù)據(jù)類型longdouble型變量分配12字節(jié)空間,實際上只占用10個字節(jié)。數(shù)組元素大小(B)數(shù)組大小(B)起始地址元素i的地址charA10110&A0&A0+iintB1004400&B0&B0+4ishort*C5420&C0&C0+4ishort*D6424&D0&D0+4ilongdoubleE1012120&E0&E0+12ilongdouble*F10440&F0&F0+4i.參考答案:表達式類型值匯編代碼Sshort*Aleal(%edx),%eaxS+ishort*A+2*ileal(%edx,%ecx,2),%eaxSishortMAS+2*imovw(%edx,%
16、ecx,2),%ax&S10short*AS+20leal20(%edx),%eax&Si+2short*A+2*i+4leal4(%edx,%ecx,2),%eax&Si-Sint(As+2*i-As)/2=imovl%ecx,%eaxS4*i+4shortMAs+2*(4*i+4)movw8(%edx,%ecx,8),%ax*(S+i-2)shortMA+2*(i-2)movw-4(%edx,%ecx,2),%ax.參考答案:根據(jù)匯編指令功能可以推斷最終在EAX中返回的值為:Ma+28*i+4*j+Mb+20*j+4*i,因為數(shù)組a和b都是int型,每個數(shù)組元素占4B,因此,M=5,N=7
17、。.參考答案:執(zhí)行第11行指令后,ai皿k的地址為a+4*(63*i+9*j+k),所以,可以推斷出M=9N=63/9=7。根據(jù)第12行指令,可知數(shù)組a的大小為4536字節(jié),故L=4536/(4*L*M)=18。.參考答案:(1)常數(shù)M=76/4=19,存放在EDI中,變量j存放在ECX中。(2)上述優(yōu)化匯編代碼對應的函數(shù)trans_matrix的C代碼如下:voidtrans_matrix(intaMM)inti,j,t,*p;intc=(M2);for(i=0;iM;i+)p=&a0i;for(j=0;j=np-;np-p=&(np-;np-next=np;.參考答案:表達式EXPRTYP
18、E類型匯編指令序列uptr-intmovl(%eax),%eaxmovl%eax,(%edx)uptr-shortmovw4(%eax),%axmovw%ax,(%edx)&uptr-short*leal6(%eax),%eaxmovw%eax,(%edx)uptr-short*movl%eax,(%edx)uptr-uptr-shortmovl4(%eax),%ecxmovl(%eax,%ecx,2),%eaxmovl%eax,(%edx)*uptr-charmovl8(%eax),%eaxmovb(%eax),%almovb%al,(%edx).參考答案:S1: s c 0S2: i s
19、0S3: c s 0S4: s c 0S5: c s 0S6: c s 0.參考答案:id248總共12字節(jié),按4字節(jié)邊界對齊cd467總共8字節(jié),按4字節(jié)邊界對齊id248總共12字節(jié),按4字節(jié)邊界對齊6總共8字節(jié),按2字節(jié)邊界對齊ide481216總共24字節(jié),按4字節(jié)邊界對齊(Linux下double型按4字節(jié)對齊)d3640總共44字節(jié),按4字節(jié)邊界對齊Windows平臺要求不同的基本類型按照其數(shù)據(jù)長度進行對齊。每個成員的偏移量如下:cdisplgv08162024283240結構總大小為48字節(jié),因為其中的d和g必須是按8字節(jié)邊界對齊,所以,必須在末尾再加上4個字節(jié),即44+4=48
20、字節(jié)。變量長度按照從大到小順序排列,可以使得結構所占空間最小,因此調(diào)整順序后的結構定義如下:structdoubled;longlongg;inti;char*p;longl;void*v;shorts;charc;test;dgiplvsc08162024283234結構總大小為34+6=40字節(jié)。.參考答案:(1)執(zhí)行第7行和第10行指令后棧中的信息存放情況如下圖所示。其中gets函數(shù)的入口參數(shù)為buf數(shù)組首地址,應等于getline函數(shù)的棧幀底部指針EBP的內(nèi)容減0 x14,而getline函數(shù)的棧幀底部指針EBP的內(nèi)容應等于執(zhí)行完getline中第2行指令(push%ebp)后ESP的
21、內(nèi)容,此時,Resp=0 xbffc07f0-4=0 xbffc07ec,故buf數(shù)組首地址為Rebp-0 x14=Resp-0 x14=0 xbffc07ec-0 x14=0 xbffc07d8。08413938EBPf飛736353433323130464544434241393813736353433323130ESP bf fc 07 d8b)執(zhí)行第10行后的棧返回P的地址EBP在P中舊值被調(diào)用者保卜存寄存器在J P中的舊值buf7 bu肥 buf0gets入口參數(shù)(2)當執(zhí)行到getline的ret指令時,假如程序不發(fā)生段錯誤,則正確的返回地址應該是0 x80485c8,發(fā)生段錯誤是因為執(zhí)行getline的ret指令時得到的返回地址為0 x8413938,這個地址所在存儲段可能是不可執(zhí)行的數(shù)據(jù)段,因而發(fā)生了段錯誤(segmentationfault)。(3)執(zhí)行完第10行匯編指令后,被調(diào)用者保存寄存器EBXESI和EDI在P中的內(nèi)容已被破壞,同時還破壞了EBP在P中的內(nèi)容。getline的C代碼中ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 母豬養(yǎng)殖的科技支持策略試題及答案
- 對聯(lián)試題解題方法及答案
- 激光技術工程師??贾R點分析
- 激光技術在環(huán)保領域的應用試題及答案
- 電梯技術員試題及答案
- 禮儀導師考試題及答案
- 衛(wèi)生管理學科復習試題及答案
- 育嬰師的工作職責與法律知識試題及答案
- 激光行業(yè)人才流動與職業(yè)發(fā)展的現(xiàn)狀分析試題及答案
- 綜合衛(wèi)生管理知識的試題及答案
- 豬場轉讓合同范本
- (二模)石家莊市2025屆高三教學質(zhì)量檢測(二)生物試卷(含標準答案)
- 南開一模試題及答案物理
- 2025年安陽職業(yè)技術學院單招職業(yè)技能測試題庫必考題
- 有關電除顫的試題及答案
- 2024-2025學年七年級數(shù)學北師大版(2024)下學期期中考試模擬卷B卷(含解析)
- 2025年入團考試練習試題(100題)附答案
- (二模)溫州市2025屆高三第二次適應性考試地理試卷(含答案)
- 2025北京外國語大學輔導員考試題庫
- 2025屆高考語文復習:小說閱讀知識點考點總結與練習題(含答案)
- DeepSeek為醫(yī)療健康領域帶來的新機遇
評論
0/150
提交評論