深入理解計算機系統 陣列儲存

2022-09-11 12:18:13 字數 1107 閱讀 8989

首先我們要知道,陣列的元素儲存的位址是連續的。

一維陣列很好理解,接下來看看二維陣列的空間分布:

對於上面這個例子, 我們可以將a看成具有五個元素,且每個元素都是3個int長度的一維陣列儲存。

分析例子

int

main()

for(i = 0 ; i < 5; i++)

return

sum;

}

翻譯成彙編:

main:

pushl %ebp

movl %esp, %ebp//

到此準備好棧幀

subl $32, %esp//

分配32個位元組的空間

leal -20(%ebp), %edx//

將幀指標減去20賦給%edx暫存器

movl $0, %eax//

將%eax設定為0,這裡的%eax暫存器是重點

.l2:

movl %eax, (%edx)//

將0放入幀指標減去20的位置?

addl $3, %eax//

第一次迴圈時,%eax為3,對於i來說,%eax=(i+1)*3。

addl $4, %edx//

將%edx加上4,第一次迴圈%edx指向幀指標-16的位置

cmpl $15, %eax//

比較%eax和15?

jne .l2//

如果不相等的話就回到l2

movl -20(%ebp), %eax//

下面這五句指令已經出賣了leal指令,很明顯從-20到-4,就是陣列五個元素存放的地方。下面的就不解釋了,直接依次相加然後返回結果。

addl -16(%ebp), %eax

addl -12(%ebp), %eax

addl -8(%ebp), %eax

addl -4(%ebp), %eax

le**e

ret

深入理解計算機系統 儲存結構

1 計算機的儲存結構是金字塔形的,一般來說cpu的週期時間 暫存器 高速sram 說明 ssd是一種基於快閃儲存器的儲存技術,乙個快閃儲存器由塊組成,每個塊又由頁組成,資料以頁為單位讀寫。ram 分為sram和dram,dram需要週期的進行重新整理,ram是易失性儲存器,一旦斷電全部消失。rom ...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...

《深入理解計算機系統》

知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...