這一章讀了蠻久,。, 中間又抽了點時間出去玩。
實驗的部分,等讀完整本書書之後再進行。本章課後習題,網上找不答案也是b了狗了。有幾道題目,想了蠻久的。
3.59 x=
xh264
+xl
y=yh
264+x
l xy
=264(
xhyl
+xly
h)+x
lyl
所以, ph
=xhy
l+xl
yh+x
lyl/
264 p
l=xl
ylmo
d264
注意:xh和
yh為有
符號數,
xl和y
l則是無
符號數
對ph 進行化簡: yl
=y−y
63264,
xl=x
−x632
64
代入後化簡為ph
=xhy
+xyh
+xly
l/264
現在解釋部分彙編指令的含義:
cqto 對%rax進行符號擴充套件,符號位存在%rdx之中
指令 4、5獲得x的符號位並存在於%rcx之中
指令6 、7和8實現xh
yl+x
lyh
mulq 單運算元實現了64位整數相乘,其高位存在於%rdx,低位存在於%rax
3.60
此題做出來的結果比較奇怪,不明白後面的**時如何執行的:
第10行彙編中 salq %cl,%rdx
顯然%rdx存了mask,%cl就是%rcx,而%rcx存了n,顯然,只取%cl表示對n取模 即mask=mask<<(n%256),但是實際上根據之前的描述只會取(n%64)。部分存疑
3.61
此題很簡單,只要稍微回顧下之前的知識即可。
**如下:
movq $0
%rax
testq %rsi
%rsi
je l1
movq (%rsi)
%rax
.l1:
req retz
3.62和3.63都是死腦筋,分清楚就好
3.64水題
add(a[i][j][k])=add(a)+sizeof(element)*(i*s*t+j*t+k);
s=5,t=13,r=7
r的計算則根據return sizeof(a)
3.67
懶得畫圖,
注意在eval過程之中使用了call prcess指令,這意味著壓棧命令,%rsp+=8;
唯一的感受就是:誰使用誰分配記憶體,至於賦值的部分則交給了子程式。
3.68
這裡涉及到對齊的問題,
第二條指令,不見得b=8,其實只需要b>4由於對齊的問題,就會空出相應的空間。顯然,根據short s[a],a佔據了剩餘的20byte
而第4條指令,則暗指int x[a][b]的空間大小為184byte。 但是這部絕對,因為如果x佔了180byte, 則會空出4byte來對齊 long y;
8>=b>4
10>=a>8
46>=ab>=45
顯然b=5,a=9;
3.69
沒做出來,懶得再分析了 有空回來二刷習題的時候慢慢研究(。,。)
3.70
這題感覺是非常簡單的。
算一算,顯然只需要16byte即可。
第二條指令 movq 8(%rsi) %rax 訪問指標 %rax=m(up+8)=up->next
第三條指令 %rdx=*(up->next)=up->next->p;
第四條指令 %rdx=*p;
所以 up->x=*(up->next->p)-up->next->y
第三章作業題3 佇列
選擇題 2 1 為解決計算機主機與印表機之間速度不匹配問題,通常設定乙個列印資料緩衝區,主機將要輸出的資料依次寫入該緩衝區,而印表機則依次從該緩衝區中取出資料。該緩衝區的邏輯結構應該是?b a.堆疊 b.佇列 c.樹d.圖 2 2 若已知一佇列用單向鍊錶表示,該單向鍊錶的當前狀態 含3個物件 是 1...
第三章作業
1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸出各個數...
第三章作業
第三章作業 習題5,求e的近似值 求自然對數e的近似值 includeusing namespace std int n return a int main cout 習題6 求圓周率 求圓周率的近似值 include includeusing namespace std int main cout...