版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、3. 參考答案:16 / 11(1)后綴:w,源基址+比例變址+偏移,目(2)后綴b,源寄存器,目(3)后綴l,源比例變址,目(4)后綴b,源基址,目(5)后綴l,源立即數(shù),目(6)后綴l,源立即數(shù),目(7)后綴w,源寄存器,目(8)后綴l,源基址+變址+偏移,目寄存器 基址+偏移 寄存器寄存器棧寄存器寄存器寄存器4. 參考答案:(1) 源操作數(shù)是立即數(shù) OxFF,需在前面加 $'(2) 源操作數(shù)是16位,而長度后綴是字節(jié) b',不一致(3 )目的操作數(shù)不能是立即數(shù)尋址(4) 操作數(shù)位數(shù)超過16位,而長度后綴為16位的w'(5) 不能用8位寄存器作為目的操作數(shù)地址所在寄
2、存器(6) 源操作數(shù)寄存器與目操作數(shù)寄存器長度不一致(7) 不存在ESX寄存器(8) 源操作數(shù)地址中缺少變址寄存器5 參考答案:表3.12題5用表src typedst type機器級表示charintmovsbl %al, (%edx)intcharmovb %al, (%edx)intunsignedmovl %eax, (%edx)shortintmovswl %ax, (%edx)unsigned charunsignedmovzbl %al, (%edx)charunsignedmovsbl %al, (%edx)intintmovl %eax, (%edx)6 參考答案:Rebp+
3、8、Rebp+12、(1) xptr、yptr和zptr對應(yīng)實參所存放的存儲單元地址分別為:Rebp+16。(2)函數(shù)func的C語言代碼如下:void fun c(i nt *xptr, i nt *yptr, i nt *zptr) int tempx=*xptr;int tempy=*yptr;int tempz=*zptr;*yptr=tempx;*zptr = tempy;*xptr = tempz;7 參考答案:(1) Redx=x(2) Redx=x+y+4(3) Redx=x+8*y(4) Redx=y+2*x+12(5) Redx=4*y(6) Redx=x+y&參考
4、答案:(1) 指令功能為:Redx Redx+MReax=Ox 00000080+M0x8049300,寄存器 EDX 中內(nèi)容改變。改變后的內(nèi)容為以下運算的結(jié)果:00000080H+FFFFFFF0H0000 0000 0000 0000 0000 0000 1000 0000+ 1111 1111 1111 1111 1111 1111 1111 00001 0000 0000 0000 0000 0000 0000 0111 0000因此,EDX中的內(nèi)容改變?yōu)?0x00000070。根據(jù)表3.5可知,加法指令會影響 OF、SF、ZF和CF標(biāo)志。OF=0 , ZF=0, SF=0, CF=1
5、。(2) 指令功能為:Recx Recx-MReax+Rebx=0x00000010+M0x8049400,寄存器 ECX 中內(nèi)容改變。改變后的內(nèi)容為以下運算的結(jié)果:00000010H - 80000008H0000 0000 0000 0000 0000 0000 0001 0000+ 0111 1111 1111 1111 1111 1111 1111 10000 1000 0000 0000 0000 0000 0000 0000 1000因此,ECX中的內(nèi)容改為 0x80000008。根據(jù)表3.5可知,減法指令會影響OF、SF、ZF和CF標(biāo)志。OF=1 ,ZF=0 , SF=1, CF
6、=1 0=1。(3) 指令功能為:Rbx Rbx or MReax+Recx*8+4,寄存器BX中內(nèi)容改變。改變后的內(nèi)容為以下運算 的結(jié)果:0x0100 or M0x8049384=0100H or FF00H0000 0001 0000 0000or 1111 1111 0000 00001111 1111 0000 0000因此,BX中的內(nèi)容改為OxFFOO。由3.3.3節(jié)可知,OR指令執(zhí)行后 OF=CF=O ;因為結(jié)果不為0,故ZF=0 ; 因為最高位為1,故SF=1。(4) test指令不改變?nèi)魏瓮ㄓ眉拇嫫?,但根?jù)以下與”操作改變標(biāo)志:Rdl a nd 0x801000 0000and
7、 1000 00001000 0000由3.3.3節(jié)可知,TEST指令執(zhí)行后OF=CF=O;因為結(jié)果不為 0,故ZF=0 ;因為最高位為1,故SF=1。(5) 指令功能為: MReax+Redx MReax+Redx*32 ,即存儲單元 0x8049380中的內(nèi)容改變?yōu)橐韵逻\算 的結(jié)果:M0x8049380*32=0x908f12a8*32 ,也即只要將 0x908f12a8左移5位即可得到結(jié)果。1001 0000 1000 1111 0001 0010 1010 1000<<5=0001 0001 1110 0010 0101 0101 0000 0000因此,指令執(zhí)行后,單元0
8、x8049380中的內(nèi)容改變?yōu)?0x11e25500。顯然,這個結(jié)果是溢出的。但是,根據(jù)表3.5可知,乘法指令不影響標(biāo)志位,也即并不會使OF=1。(6)指令功能為:Rcx JRcx-1,即CX寄存器的內(nèi)容減一。0000 0000 0001 0000+ 1111 1111 1111 11111 0000 0000 0000 1111因此,指令執(zhí)行后 CX中的內(nèi)容從0x0010變?yōu)?x000F。由表3.5可知,DEC指令會影響 OF、ZF、SF, 根據(jù)上述運算結(jié)果,得到OF=0, ZF=0,SF=0。9 參考答案:movl12(%ebp), %ecxRecx MRebp+12,將 y送 ECXsa
9、ll$8, %ecxRecx jRecx<<8,將 y*256 送 ECXmovl8(%ebp), %eaxReax MRebp+8,將 x 送 EAXmovl20(%ebp), %edxRedx JMRebp+20,將 k 送 EDXimull%edx, %eaxReax j Reax*Redx,將 x*k 送 EAXmovl16(%ebp), %edxRedx JMRebp+16,將 z 送 EDXandl$65520, %edxRedx jRedx and 65520,將 z&0xFFF0 送 EDXaddl%ecx, %edxRedx jRedx + Recx,將
10、z&0xFFF0+y*256 送EDXsubl%edx, %eaxReax jReax-Redx,將 x*k-(z&0xFFF0+y*256)送E AX根據(jù)以上分析可知,第3行缺失部分為:3 int v = x*k-(z&0xFFF0+y*256);10參考答案:從匯編代碼的第2行和第4行看,y應(yīng)該是占8個字節(jié),Rebp+20開始的4個字節(jié)為高32位字節(jié),記為yh; Rebp+16開始的4個字節(jié)為低32位字節(jié),記為yi。根據(jù)第4行為無符號數(shù)乘法指令,得知y的數(shù)據(jù)類型num_type為 unsigned long long。movl12(%ebp), %eaxReax M
11、Rebp+12,將 x 送 EAXmovl20(%ebp), %ecxRecx MRebp+20,將 yh 送 ECXimull%eax, %ecxRecx jRecx*Reax,將 yh*x 的低 32 位送 ECXmull16(%ebp)RedxReax J MRebp+16*Reax,將 yl*x 送 EDX-EAXleal(%ecx, %edx), %edx/ Redx jRecx+Redx,將 yl*x 的高 32 位與 yh*x 的低 32 位相加后送 EDXmovl8(%ebp), %ecxRecx JMRebp+8,將 d 送 ECXmovl%eax, (%ecx)MRecx
12、jReax,將 x*y 低 32 位送 d 指向的低 32 位movl%edx, 4(%ecx)MRecx+4 jRedx,將 x*y 高 32 位送 d 指向的高 32 位11 參考答案:根據(jù)第3.3.4節(jié)得知,條件轉(zhuǎn)移指令都采用相對轉(zhuǎn)移方式在段內(nèi)直接轉(zhuǎn)移,即條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址為: (PC) +偏移量。(1) 因為je指令的操作碼為01110100,所以機器代碼 7408H中的08H是偏移量,故轉(zhuǎn)移目標(biāo)地址為: 0x804838c+2+0x8=0x8048396 。call指令中的轉(zhuǎn)移目標(biāo)地址 0x80483b仁0x804838e+5+0x1e,由此,可以看出,call指令機器代碼中
13、后面的4個字節(jié)是偏移量,因IA-32采用小端方式,故偏移量為0000001EH。call指令機器代碼共占5個字節(jié),因此,下條指令的地址為當(dāng)前指令地址 0x804838e加5。(2) jb指令中F6H是偏移量,故其轉(zhuǎn)移目標(biāo)地址為:0x8048390+2+0xf6=0x8048488。movl指令的機器代碼有10個字節(jié),前兩個字節(jié)是操作碼等,后面8個字節(jié)為兩個立即數(shù),因為是小端方式,所以,第一個立即數(shù)為 0804A800H,即匯編指令中的目的地址 0x804a800,最后4個字節(jié)為立即數(shù) 00000001H,即 匯編指令中的常數(shù) 0x1。(3) jle指令中的7EH為操作碼,16H為偏移量,其匯編
14、形式中的0x80492e0是轉(zhuǎn)移目的地址,因此,假定后 面的 mov 指令的地址為 x,則 x 滿足以下公式:0x80492e0=x+0x16,故 x=0x80492e0-0x16=0x80492ca。(4) jmp指令中的E9H為操作碼,后面 4個字節(jié)為偏移量,因為是小端方式,故偏移量為FFFFFFOOH,即 -100H=-256。 后面的 sub 指令的地址為 0x804829b, 故jmp 指令的轉(zhuǎn)移目標(biāo)地址為 0x804829b+0xffffff00=0x804829b - 0x100=0x804819b。12參考答案:(1)匯編指令的注解說明如下:1movb8(%ebp), %dlR
15、dl MRebp+8,將 x 送 DL2movl12(%ebp), %eaxReax fRebp+12,將 p 送 EAX3testl%eax, %eaxReax and Reax,判斷 p 是否為 04je丄1/若p為0,則轉(zhuǎn)丄1執(zhí)行5testb$0x80, %dlRdl and 80H,判斷x的第一位是否為 06je丄1II若x>=0,則轉(zhuǎn)丄1執(zhí)行7addb%dl, (%eax)MReax HMReax+Rdl,即 *p+=x8丄1:因為C語言if語句中的條件表達式可以對多個條件進行邏輯運算,而匯編代碼中一條指令只能進行一種邏輯運算,并且在每條邏輯運算指令生成的標(biāo)志都是存放在同一個E
16、FLAGS寄存器中,所以,最好在一條邏輯指令后跟一條條件轉(zhuǎn)移指令,把EFLAGS中標(biāo)志用完,然后再執(zhí)行另一次邏輯判斷并根據(jù)條件進行轉(zhuǎn)移的操作。(2)按照書中圖3.22給出的“if () goto”語句形式寫出匯編代碼對應(yīng)的C語言代碼如下:1void comp(char x, int *p)23if (p!=0)4if (x<0)5*p += x;613參考答案:1234567891011int fun c(i nt x, int y)int z = x*y ;if (x<=-100) if ( y>x)z = x+y;elsez = x-y ; else if (x>=
17、16)z = x &y ;return 乙12 14參考答案:(1)每個入口參數(shù)都要按 4字節(jié)邊界對齊,因此,參數(shù)x、y和k入棧時都占4個字節(jié)。1 movw 8(%ebp), %bx2 movw 12(%ebp), %si3 movw 16(%ebp), %cxRbx fRebp+8,將 x 送 BX Rsi MRebp+12,將 y 送 SI Rcx MRebp+16,將 k 送 CX4 丄1:5movw%si, %dxRdx MRsi,將 y 送 DX6movw%dx, %axRax jRdx,將 y 送 AX7sarw$15, %dxRdx jRdx>>15,將y的符
18、號擴展16位送DX8idiv%cxRdx Rdx-ax - Rcx的余數(shù),將 y%k 送 DX Rax Rdx-ax - Rcx的商,將 y/k 送 AX9imulw%dx, %bxRbx Rbx*Rdx,將 x*(y%k)送 BX10decw%cx/Rcx Rcx-1,將 k-1 送 CX11testw%cx, %cx/Rcx a nd Rcx,得 OF=CF=0,負數(shù)則 SF=1,零則 ZF=112jle丄2/若k小于等于0,則轉(zhuǎn)丄213cmpw%cx, %siRsi - Rcx,將y與k相減得到各標(biāo)志14jg丄1/若y大于k,則轉(zhuǎn)丄115丄2:16movswl%bx, %eax/ Rea
19、x Rbx,將 x*(y%k)送 AX(2)被調(diào)用者保存寄存器有BX、SI,調(diào)用者保存寄存器有 AX、CX和DX。在該函數(shù)過程體前面的準(zhǔn)備階段,被調(diào)用者保存的寄存器EBX和ESI必須保存到棧中。(3) 因為執(zhí)行第8行除法指令前必須先將被除數(shù)擴展為32位,而這里是帶符號數(shù)除法,因此,采用算術(shù)右移以擴展16位符號,放在高16位的DX中,低16位在AX中。15參考答案:1int f1( un sig ned x)23int y = 0 ;4while (x!=0) 5y A=x;6x>>=1;78return y&0x1;9函數(shù)f1 的功能返回:(x A x>>1 A
20、 x>>2 A.)& 0x1,因此f1用于檢測x的奇偶性,當(dāng)x中有奇數(shù)個1,則返回為1,否則返回0。16參考答案:函數(shù)sw只有一個入口參數(shù) x,根據(jù)匯編代碼的第 25行指令知,當(dāng)x+3>7時轉(zhuǎn)標(biāo)號丄7處執(zhí)行,否則,按照跳 轉(zhuǎn)表中的地址轉(zhuǎn)移執(zhí)行,x與跳轉(zhuǎn)目標(biāo)處標(biāo)號的關(guān)系如下:x+3=0 :丄7x+3=1:丄2x+3=2: .L2x+3=3 : .L3x+3=4 :丄4x+3=5 : .L5x+3=6 : .L7x+3=7 : .L6由此可知,switch (x)中省略的處理部分結(jié)構(gòu)如下:case -2:case -1:/丄2標(biāo)號處指令序列對應(yīng)的語句break;case
21、0:/丄3標(biāo)號處指令序列對應(yīng)的語句break;case 1:/丄4標(biāo)號處指令序列對應(yīng)的語句break;case 2:/丄5標(biāo)號處指令序列對應(yīng)的語句break;case 4:/丄6標(biāo)號處指令序列對應(yīng)的語句break;default:/丄7標(biāo)號處指令序列對應(yīng)的語句17參考答案:根據(jù)第2、3行指令可知,參數(shù)a是char型,參數(shù)p是指向short型變量的指針;根據(jù)第 4、5行指令可知,參數(shù) b和c都是unsigned short型,根據(jù)第6行指令可知,test的返回參數(shù)類型為 unsigned int。因此,test的原型為: un sig ned int test(char a, un sig ne
22、d short b, un sig ned short c, short *p);18參考答案:每次執(zhí)行pushl指令后,Resp=Resp-4,因此,第2行指令執(zhí)行后 Resp=0xbc00001c。(1) 執(zhí)行第3行指令后,Rebp=Resp=0xbc00001c。到第12條指令執(zhí)行結(jié)束都沒有改變EBP的內(nèi)容,因而 執(zhí)行第10行指令后,EBP的內(nèi)容還是為0xbc00001c。執(zhí)行第13行指令后,EBP的內(nèi)容恢復(fù)為進入函數(shù) funct 時的值 0xbc000030。(2) 執(zhí)行第 3 行指令后,Resp=0xbc00001c。執(zhí)行第 4 行指令后 Resp= Resp-40=0xbc0000
23、1c-0x28=0xbbfffff4 。因而執(zhí)行第10行指令后,未跳轉(zhuǎn)到scanf函數(shù)執(zhí)行時,ESP中的內(nèi)容為0xbbfffff4-4=0xbbfffff0 ;在從scanf 函數(shù)返回后ESP中的內(nèi)容為0xbbfffff4。執(zhí)行第13行指令后,ESP的內(nèi)容恢復(fù)為進入函數(shù)funct時的舊值,即 Resp=0xbc000020。(3) 第5、6兩行指令將scanf的第三個參數(shù)&y入棧,入棧的內(nèi)容為 Rebp-8=0xbc000014 ;第7、8兩行指令 將scanf的第二個參數(shù) &x入棧,入棧的內(nèi)容為 Rebp-4=0xbc000018。故x和y所在的地址分別為 0xbc00001
24、8 和 0xbc000014。(4) 執(zhí)行第10行指令后,funct棧幀的地址范圍及其內(nèi)容如下:0xbc00001c0xbc0000180xbc0000140xbc0000100xbc00000c0xbc0000080xbc0000040xbc0000000xbbfffffc0xbbfffff80xbbfffff40xbbfffff00xbc000030x=15y=200xbc0000140xbc0000180x804c000從scanf返回的地址ESPEBP棧幀底部19參考答案:第1行匯編指令說明參數(shù) x存放在EBX中,根據(jù)第4行判斷x=0則轉(zhuǎn).L2,否則繼續(xù)執(zhí)行第 510行指令。根據(jù) 第5
25、、6、7行指令可知,入棧參數(shù) nx的計算公式為x>>1 ;根據(jù)第9、10、11行指令可知,返回值為(x&1)+rv。由此推斷出C缺失部分如下:1 int refunc(un sig ned x) 2 if (x=0)3 return 0;4 un sig ned nx =x>>1;5 int rv = refunc(nx);6 return (x & 0x1) + rv ;7 該函數(shù)的功能為計算x的各個數(shù)位中1的個數(shù)。20 參考答案:在IA-32中,GCC為數(shù)據(jù)類型long double型變量分配12字節(jié)空間,實際上只占用10個字節(jié)。數(shù)組元素大小(B)數(shù)
26、組大小(B)起始地址元素i的地址char A10110&A0&A0+ iint B1004400& B0&B0+4 ishort *C5420& C0&C0+4 ishort *D6424& D0&D0+4 ilong double E1012120& E0&E0+12 ilong double *F10440& F0&F0+4 i21 參考答案:表達式類型值匯編代碼Sshort *Asleal (%edx), %eaxS+ishort *As+2*ileal (%edx, %ecx, 2), %e
27、axSishortMAs+2*imovw (%edx, %ecx, 2), %ax& S10short *As+20leal 20(%edx), %eax& Si+2short *As+2*i+4leal 4(%edx, %ecx, 2), %eax& Si-Sint(As+2*i-As)/2=imovl %ecx, %eaxS4*i+4shortM As+2*(4* i +4)movw 8(%edx, %ecx, 8), %ax*(S+i-2)shortMAs+2*(i-2)movw -4(%edx, %ecx, 2), %ax22. 參考答案:根據(jù)匯編指令功能可以推
28、斷最終在EAX中返回的值為:Ma+28*i+4*j+Mb+20*j+4*i ,因為數(shù)組a和b都是int型,每個數(shù)組元素占4B,因此,M=5, N=7。23. 參考答案:執(zhí)行第11行指令后,aijk的地址為a+4*(63*i+9*j+k),所以,可以推斷出M=9 , N=63/9=7。根據(jù)第12行指令,可知數(shù)組a的大小為4536字節(jié),故L=4536/(4*L*M)=18 。24. 參考答案:(1) 常數(shù) M=76/4=19,存放在 EDI中,變量j存放在ECX中。(2) 上述優(yōu)化匯編代碼對應(yīng)的函數(shù)trans_matrix的C代碼如下:1 void trans_matrix(int aMM) 2
29、int i, j, t, *p;3 in t c=(M<<2);3 for (i = 0; i < M; i+) 4 p=&a0i;5 for (j = 0; j < M; j+) 6t=*p;7*p = aij;8aij = t;9p += c ;1011 12 25 參考答案:(1) node所需存儲空間需要 4+(4+4)+4=16字節(jié)。成員p、s.x、s.y和next的偏移地址分別為0、4、8和12。(2) np_init中缺失的表達式如下:void np_in instruct node *np)n p->s.x = n p->s.y ;n
30、 p->p = &(n p->s.x);np_>n ext= np ;26 參考答案:表達式EXPRTYPE類型匯編指令序列uptr->s1.xintmovl (%eax), %eax movl %eax, (%edx)uptr->s1.yshortmovw 4(%eax), %ax movw %ax, (%edx)& uptr->s1.zshort *leal 6(%eax), %eax movw %eax, (%edx)uptr->s2.ashort *movl %eax, (%edx)uptr->s2.auptr->s
31、2.bshortmovl 4(%eax), %ecxmovl (%eax, %ecx, 2), %eax movl %eax, (%edx)*uptr->s2.pcharmovl 8(%eax), %eax movb (%eax), %al movb %al, (%edx)27 參考答案:(1)S1:scid0248總共12字節(jié),按4字節(jié)邊界對齊(2)S2:iscd0467總共8字節(jié),按4字節(jié)邊界對齊(3)S3:csid0248總共12字節(jié),按4字節(jié)邊界對齊(4)S4:sc06總共8字節(jié),按2字節(jié)邊界對齊(5)S5:cside0481216 總共24字節(jié),按4字節(jié)邊界對齊(Linux下d
32、ouble型按4字節(jié)對齊)(6)S6:csd03640總共44字節(jié),按4字節(jié)邊界對齊28 參考答案:Windows平臺要求不同的基本類型按照其數(shù)據(jù)長度進行對齊。每個成員的偏移量如下:cdispl gv0816 202428 3240結(jié)構(gòu)總大小為48字節(jié),因為其中的 d和g必須是按 即44+4=48字節(jié)。變量長度按照從大到小順序排列,8字節(jié)邊界對齊,所以,必須在末尾再加上 4個字節(jié), 可以使得結(jié)構(gòu)所占空間最小, 因此調(diào)整順序后的結(jié)構(gòu)定義如下:struct double long long int char long void short char test ;dgip0816 20d;g;i;*
33、p;l;*v ;s;c;l vsc24 28 32 34結(jié)構(gòu)總大小為34+6=40字節(jié)。29 參考答案:(1) 執(zhí)行第7行和第10行指令后棧中的信息存放情況如下圖所示。其中g(shù)ets函數(shù)的入口參數(shù)為 buf數(shù)組首地址,應(yīng)等于getline函數(shù)的棧幀底部指針 EBP的內(nèi)容減0x14,而getline函數(shù)的棧幀底部指針EBP的內(nèi)容應(yīng)等于執(zhí)行完getli ne中第2行指令(push %ebp)后 ESP的內(nèi)容,此時,Resp=0xbffc07f0 - 4=0xbffc07ec,故 buf 數(shù)組首地址為 Rebp-0x14= Resp- 0x14=0xbffc07ec- 0x14=0xbffc07d8。
34、返回P的地址EBP在P中舊值被調(diào)用者保 存寄存器在 P中的舊值buf7 buf4buf3 buf0a)執(zhí)行第7行后的棧08 41 39 38EBP f37 36 35 34返回P的地址EBP在P中舊值ESP33 32 31 3046 45 44 4342 41 39 3837 36 35 34被調(diào)用者保 存寄存器在 P中的舊值33 32 31 30bf fc 07 d8buf7 buf4buf3 buf0gets入口參數(shù)b)執(zhí)行第10行后的棧(2) 當(dāng)執(zhí)行到getline的ret指令時,假如程序不發(fā)生段錯誤,則正確的返回地址應(yīng)該是0x80485c8,發(fā)生段錯誤是因為執(zhí)行 getline的ret
35、指令時得到的返回地址為0x8413938 ,這個地址所在存儲段可能是不可執(zhí)行的數(shù)據(jù)段,因而發(fā)生了段錯誤(segme ntation fault )。(3) 執(zhí)行完第10行匯編指令后,被調(diào)用者保存寄存器EBX、ESI和EDI在P中的內(nèi)容已被破壞,同時還 破壞了 EBP在P中的內(nèi)容。(4) getline的C代碼中malloc函數(shù)的參數(shù)應(yīng)該為strlen(buf)+1,此外,應(yīng)該檢查 malloc函數(shù)的返回值是否 為 NULL 。30 參考答案:X86-64過程調(diào)用時參數(shù)傳遞是通過通用寄存器進行的,前三個參數(shù)所用寄存器順序為RDI、RSI、RDX。abc的4種合理的函數(shù)原型為: viod abc(
36、int c, long *a, int *b); viod abc(unsigned c, long *a, int *b); viod abc(long c, long *a, int *b); viod abc(unsigned long c, long *a, int *b);根據(jù)第3、4行指令可知,參數(shù)b肯定指向一個32位帶符號整數(shù)類型;根據(jù)第 5行指令可知,參數(shù)a指向 64位帶符號整數(shù)類型;而參數(shù) c可以是32位,也可以是64位,因為*b為32位,所以取RDI中的低32 位Redi(截斷為32位),再和*b相加。同時,參數(shù)c可以是帶符號整數(shù)類型,也可以是無符號整數(shù)類型,因為第2行加法
37、指令addl的執(zhí)行結(jié)果對于帶符號整數(shù)和無符號整數(shù)都一樣。31 參考答案:(1)匯編指令注釋如下:1movl8(%ebp), %edxRedx fRebp+8,將 x 送 EDX2movl12(%ebp), %ecxRecx MRebp+12,將 k 送 ECX3movl$255, %esiResi 255,將 255 送 ESI4movl$-2147483648, %ediRedi -2147483648,將 0x80000000 送 EDI5丄3:6movl%edi, %eaxReax Redi,將 i 送 EAX7andl%edx, %eaxReax Reax a nd Redx,將 i and x 送 EAX8xorl%eax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年節(jié)日慶典宣傳品批量采購合同2篇
- 2025年暑期大學(xué)生兼職項目合作協(xié)議書3篇
- 2025年牙科產(chǎn)品市場營銷與推廣合同模板3篇
- 2024年中級經(jīng)濟師考試題庫實驗班
- 2025年度個人二手房購房合同范本及裝修款項分期支付協(xié)議2篇
- CEEM《全球智庫半月談》總第295期
- 銀山路施工方案審查
- 2024年中級經(jīng)濟師考試題庫附答案【模擬題】
- 音響安裝施工方案
- 2024年中級經(jīng)濟師考試題庫含完整答案
- 新能源行業(yè)市場分析報告
- 2025年天津市政建設(shè)集團招聘筆試參考題庫含答案解析
- 巖土工程勘察.課件
- 60歲以上務(wù)工免責(zé)協(xié)議書
- 2022年7月2日江蘇事業(yè)單位統(tǒng)考《綜合知識和能力素質(zhì)》(管理崗)
- 初一英語語法練習(xí)
- 房地產(chǎn)運營管理:提升項目品質(zhì)
- 你劃我猜游戲【共159張課件】
- 專升本英語閱讀理解50篇
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
評論
0/150
提交評論