<安全攻防之switch>

switch

① 當判斷條件小于4時switch的匯編代碼
Snipaste_2019-10-30_15-36-04.png
switch少量判斷.png
② 當條件大于4時switch執(zhí)行default的匯編代碼(我傳入的參數是5,switch會執(zhí)行default)
switch4.png

switch-default.png
  • 我們看一下ida給我們分析的(ida更加詳細的給出了代碼的執(zhí)行順序以及打印信息)


    switchDefaultIDA.png
③ 當條件大于3時switch執(zhí)行中間判斷的匯編代碼(我傳入的參數是2)
switch-noDefault.png

switch-noDefault1.png

Snipaste_2019-11-04_12-49-31.png

switch_table.png
$總結: 當判斷條件大于3的時候,代碼的執(zhí)行先判斷是否執(zhí)行default,然后再根據算法算出對應的值.(相當于生成了一個表,程序根據算法去查詢表格,取出對應的值)
④對于連貫的switch判斷(case1, 2, 3...)對應的有相應的算法,那對于不連貫的判斷是否是單個的比較還是有對應的算法呢,下邊我們看對于不連貫的的判斷,看匯編代碼是否一樣?
switch_001.png

switch002.png

switch003.png

switch004.png
$總結: 當判斷條件不連貫且中間判斷條件相隔不大時,還是會執(zhí)行算法,對于中間缺失的判斷,內存中會用指向default的內存地址填充.我們無法控制是否讓編譯器執(zhí)行判斷語句或者是算法運算,編譯器會在效率或者內存上進行取舍.

總結:

  • switch語句分支較少的時候(小于4),沒必要用switch...case語句,相當于if...else判斷.
  • 各個分支常量差值較大時,編譯器會在效率或者內存上進行取舍.就相當于if...else判斷.
  • 在分支較多時(大于3)且分支常量差值較小的情況下,在編譯的時候會生成一個表(跳轉表每個地址4個字節(jié)).
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末冶伞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡佩番,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門罢杉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趟畏,“玉大人,你說我怎么就攤上這事滩租「承悖” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵律想,是天一觀的道長猎莲。 經常有香客問我,道長蜘欲,這世上最難降的妖魔是什么益眉? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮姥份,結果婚禮上郭脂,老公的妹妹穿的比我還像新娘。我一直安慰自己澈歉,他們只是感情好展鸡,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著埃难,像睡著了一般莹弊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涡尘,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天忍弛,我揣著相機與錄音,去河邊找鬼考抄。 笑死细疚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的川梅。 我是一名探鬼主播疯兼,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贫途!你這毒婦竟也來了吧彪?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丢早,失蹤者是張志新(化名)和其女友劉穎姨裸,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體怨酝,經...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡傀缩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凫碌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扑毡。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盛险,靈堂內的尸體忽然破棺而出瞄摊,到底是詐尸還是另有隱情,我是刑警寧澤苦掘,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布换帜,位于F島的核電站,受9級特大地震影響鹤啡,放射性物質發(fā)生泄漏惯驼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祟牲。 院中可真熱鬧隙畜,春花似錦、人聲如沸说贝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乡恕。三九已至言询,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間傲宜,已是汗流浹背运杭。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留函卒,地道東北人辆憔。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像谆趾,于是被迫代替她去往敵國和親躁愿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內容

  • Swift 提供了類似 C 語言的流程控制結構沪蓬,包括可以多次執(zhí)行任務的for和while循環(huán)彤钟,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 706評論 1 1
  • Swift提供了多種控制流聲明。包括while循環(huán)來多次執(zhí)行一個任務跷叉;if逸雹,guard和switch聲明來根據確定...
    BoomLee閱讀 1,958評論 0 3
  • [The Swift Programming Language 中文版]本頁包含內容: Swift提供了多種流程控...
    風林山火閱讀 571評論 0 0
  • 本章將會介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語句Switch 語句控制轉移語句 continu...
    寒橋閱讀 727評論 0 0
  • 控制流 [TOC] Swift提供了多種流程控制結構梆砸,包括可以多次執(zhí)行任務的while循環(huán),基于特定條件選擇執(zhí)行不...
    伍哥___閱讀 514評論 0 0