CSAPP第三章作業題

2021-07-31 17:32:52 字數 1963 閱讀 2672

這一章讀了蠻久,。, 中間又抽了點時間出去玩。

實驗的部分,等讀完整本書書之後再進行。本章課後習題,網上找不答案也是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...