先說結論:
我們可以通過反彙編檢視程式對應的組合語言,了解其具體實現。
讓我們先通過下面的例子了解下組合語言:
void func (
)mov dword ptr [ebp-4]
,10h
mov 是指令,意思是把資料從「源位址」移動到「目的位址」;
10h 就是「源位址」,只不過這裡用了乙個常數而不是位址
dword ptr [ebp-
4] 就是「目的位址」。
其中,ebp你可以理解為乙個指標,ebp-
4則是向下4的偏移處(剛好就是na的位址)。
dword ptr意思是把剛才那個偏移處(na的位址)解釋為雙字指標,即指向4個位元組的記憶體空間的指標。
驗證:
int
main()
反編譯:
對程式進行反彙編,我們可以有以下結論:
參考:
資料型別的本質
1 對於問題理解的深度,決定能不能成為乙個高手 2 概念不清晰,是產生bug的根源 本質 固定大小記憶體塊的別名 a 10 a a 陣列資料型別 關鍵點 1 陣列型別 2 陣列指標 3 陣列型別與陣列指標型別的關係 求資料型別佔的位元組數 sizeof 資料型別可以起別名嗎?tpedef 重定義資料...
01 02 資料型別本質
include include include 給型別起別名 類似於科比的全名叫 科比,布萊恩特,使用typedef 可以叫他科比 typedef unsigned int u32 typedef和結構體結合使用 struct mystruct typedef struct mystruct2 tm...
1 20 資料型別本質
include include include 資料型別 基本型別 int float double char void 使用者定義型別 列舉型別 enum 結構型別 陣列 結構struct 聯合union 類class 指標型別 資料型別的本質 資料型別可以理解為變數的模具,固定記憶體大小的別名 ...