switch跳轉表分析

2021-07-06 04:53:34 字數 1673 閱讀 3481

/// @file 2015_1026\exam_1_2\main.c

/// @brief

/**switch-case分析

401139h 為switch

跳轉表首位址

ecx 為 

casen, casen

是作過優化的n從

0開始到4結束

在memory

視窗檢視 

switch

跳轉表首位址401139h

每個位址是4個位元組,按照

long hex

顯示

在vside

中開啟反彙編,可以看到每個

case

的位址

case1 位址 

0040107f

case4 位址 

00401092

case7 位址 

004010a5

case10 位址 

004010b8

default 位址 

004010cb

可以看到每個case

的位址在

switch

跳轉表中依次排列

switch的跳轉表

1.跳轉表是否是隨機生成的?是隨機生成的 2.跳轉表的工作原理?3.跳轉表中每個case之間的關係?跳躍表的性質 1.由很多層結構組成 2.每一層都是乙個有序的鍊錶,排列順序為由高層到底層,都至少包含兩個鍊錶節點,分別是前面的head節點和後面的nil節點 3.最底層的鍊錶包含了所有的元素 4.如果...

switch跳轉表簡析

最近偶然看到一篇文章講到if else和switch case的不同,文章呼籲寫 時將所有的if else替換為switch case增強 可讀性與 效率,是否增強了 的可讀性暫且不論,思考一下為什麼能增強 效率。了解到swtich case在流程眾多的時候,編譯器會引入跳轉表這一資料結構對彙編進行...

彙編控制類指令 switch之跳轉表

switch語句可以根據乙個整數索引值進行多重分支。處理具有多種可能結果的測試時,這種語句特別有用。它們不僅提高了 的可讀性,而且使用跳轉表這個資料結構使用實現更加高效。跳轉表是乙個陣列,表項i是乙個 段的位址,這個 段實現當switch索引值等於i時程式應該執行的動作。程式 用於索引值來執行乙個跳...