工作學習筆記 CSAPP第三章

2021-06-01 07:41:03 字數 576 閱讀 4209

一、可變長陣列  

剛開始學習c語言時,都會被教到,宣告陣列時,陣列的維數只能使用常量,也就是只能宣告定長陣列。如果資料個數不定的話,就要使用malloc動態分配。當時只是死記硬背,並沒有想想這是什麼道理。工作中了解到,函式中宣告的陣列一般儲存在棧上,陣列元素通過棧指標加偏移量和下標偏移來訪問。那時就已經有些困惑,棧上空間的分配只是將sp暫存器減乙個數,如果這個數是儲存在暫存器或者記憶體中的話,不是就可以做到宣告函式上的變長陣列了麼?c庫中有乙個函式alloca,與malloc的區別就是,申請的記憶體是分配在棧上的,這個不也意味著棧上的變長陣列是可能的?

int arrary[m][n];

不過這種陣列只能在函式內部使用,如果傳遞到函式外的話,結果可能是災難性的。因為函式一退出,給函式分配的變數棧空間也隨之銷毀了。另外,即使是vc2010,也不支援c99的這種定義。

二、棧幀暫存器ebp是否必要

三、x86、x86-64

intel設計的x86,amd學過來用。intel自家的ia64,市場不歡迎。反倒是amd在x86基礎上設計的x86-64流行起來,搞得intel又反過來學。這段歷史也很有趣。

第三章學習筆記

執行執行緒,簡稱執行緒,是在程序中活動的物件。核心排程的物件是執行緒,而不是程序。程序描述符中包含的資料能完整地描述乙個正在執行的程式 各種狀態之間存在轉換的條件,若滿足則進行轉換,跟模擬電路中所學的狀態機是乙個道理。通過st task state task,state 函式來設定當前程序狀態 fo...

CSAPP第三章作業題

這一章讀了蠻久,中間又抽了點時間出去玩。實驗的部分,等讀完整本書書之後再進行。本章課後習題,網上找不答案也是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 26...

第三章筆記

第三章預習筆記 一 高階語言和機器指令中的運算 1,按位運算 符號 按位or運算 符號 按位and運算 符號 表示按位not運算 符號 按位xor運算。實現掩碼操作 通過與給定的乙個位模式進行按位與,可以提取所需要的位,對這些位進行 置1 清0 等。2,符號 按位or運算 符號 表示and運算 符號...