最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語(yǔ)言switch反匯編的實(shí)現(xiàn)

 更新時(shí)間:2021年06月15日 14:25:28   作者:multi4  
本文主要介紹了c語(yǔ)言switch反匯編,在分支較多的時(shí)候,switch的效率比if高,在反匯編中我們即可看到效率高的原因,感興趣的可以了解一下

在分支較多的時(shí)候,switch的效率比if高,在反匯編中我們即可看到效率高的原因

一、switch語(yǔ)句

1、在正向編碼時(shí),switch語(yǔ)句可以看做是if語(yǔ)句的簡(jiǎn)寫(xiě)

在這里插入圖片描述

2、break在switch語(yǔ)句的妙用

1、當(dāng)switch存在3個(gè)分支時(shí)

在這里插入圖片描述

當(dāng)去掉break的時(shí)候

在這里插入圖片描述

二、switch語(yǔ)句的反匯編

1、當(dāng)switch存在3個(gè)分支時(shí)

#include<stdio.h>

void Function(int x) {
	switch (x) {
		case 1:
			printf("1");

		case 2:
			printf("2");
		case 3:
			printf("3");
		default:
			printf("4");
	}
}
int main() {
	Function(2);
	return 0;
}

在這里插入圖片描述

可以看出,此時(shí)switch的反匯編代碼與if語(yǔ)句無(wú)異。
當(dāng)有四個(gè)if語(yǔ)句的時(shí)候就會(huì)生成大表。

在這里插入圖片描述

2、當(dāng)switch語(yǔ)句出現(xiàn)四個(gè)分支時(shí),編譯器會(huì)產(chǎn)生大表

步驟:

1、將傳進(jìn)來(lái)的數(shù)先減去1,再進(jìn)行比較。判斷出該參數(shù)是否超過(guò)switch語(yǔ)句中最大常量還,即判斷參數(shù)是直接進(jìn)入default中還是進(jìn)入case中

2、 若參數(shù)<=max,則用寄存器保留該值。并代入表達(dá)式中,通過(guò)大表直接跳到相應(yīng)的地址
注意

分支少于四個(gè),則switch無(wú)意義,編譯器會(huì)按if…else…語(yǔ)句進(jìn)行反匯編
case后的常量的順序不影響大表的生成

將常量值的順序打亂,觀察反匯編代碼

正向代碼

在這里插入圖片描述

匯編代碼

在這里插入圖片描述

這里可以看到大表里面都是自己排好序了。

將連續(xù)的10項(xiàng)中抹去1項(xiàng)或者2項(xiàng),觀察反匯編有無(wú)變化

正向代碼是這樣的

在這里插入圖片描述

這里可以看到有幾個(gè)地址是一樣的

在這里插入圖片描述

可以發(fā)現(xiàn)是指向默認(rèn)的地址。

在這里插入圖片描述

3、當(dāng)switch存在多個(gè)分支,常量連續(xù)性相對(duì)不高時(shí)

在這里插入圖片描述

就會(huì)生成小表

在這里插入圖片描述

步驟:

1、將傳進(jìn)來(lái)的參數(shù)減去最小值,然后跟最大值相比,如果大于的話就跳到默認(rèn)的地方,不然就用差值去查小表,然后查大表。

補(bǔ)充:當(dāng)case后的常量差距較大時(shí)

編譯器按照if…else…進(jìn)行反匯編

到此這篇關(guān)于c語(yǔ)言switch反匯編的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)c語(yǔ)言switch反匯編內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用C語(yǔ)言實(shí)現(xiàn)順序表的實(shí)例操作

    利用C語(yǔ)言實(shí)現(xiàn)順序表的實(shí)例操作

    順序表是線性表中的一種重要的數(shù)據(jù)結(jié)構(gòu),也是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),所以他不僅是學(xué)習(xí)中的重點(diǎn),也是應(yīng)用開(kāi)發(fā)非常常用的一種數(shù)據(jù)結(jié)構(gòu)。這篇文章介紹如何利用C語(yǔ)言實(shí)現(xiàn)順序表。
    2016-08-08
  • C++進(jìn)程的創(chuàng)建和進(jìn)程ID標(biāo)識(shí)詳細(xì)介紹

    C++進(jìn)程的創(chuàng)建和進(jìn)程ID標(biāo)識(shí)詳細(xì)介紹

    傳統(tǒng)的C++(C++98)中并沒(méi)有引入線程這個(gè)概念。linux和unix操作系統(tǒng)的設(shè)計(jì)采用的是多進(jìn)程,進(jìn)程間的通信十分方便,同時(shí)進(jìn)程之間互相有著獨(dú)立的空間,不會(huì)污染其他進(jìn)程的數(shù)據(jù),天然的隔離性給程序的穩(wěn)定性帶來(lái)了很大的保障
    2022-08-08
  • C++中產(chǎn)生臨時(shí)對(duì)象的情況及其解決方案

    C++中產(chǎn)生臨時(shí)對(duì)象的情況及其解決方案

    這篇文章主要介紹了C++中產(chǎn)生臨時(shí)對(duì)象的情況及其解決方案,以值傳遞的方式給函數(shù)傳參,類(lèi)型轉(zhuǎn)換以及函數(shù)需要返回對(duì)象時(shí),并給對(duì)應(yīng)給出了詳細(xì)的解決方案,通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • C++提取文件中信息的方法

    C++提取文件中信息的方法

    這篇文章主要為大家詳細(xì)介紹了C++提取文件中信息的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C++?list常用接口和模擬實(shí)現(xiàn)實(shí)例代碼

    C++?list常用接口和模擬實(shí)現(xiàn)實(shí)例代碼

    C++中l(wèi)ist容器底層實(shí)現(xiàn)是使用帶頭雙向循環(huán)鏈表的結(jié)構(gòu),通過(guò)指針指向前一個(gè)和后一個(gè)節(jié)點(diǎn),它也具有雙向鏈表的優(yōu)缺點(diǎn),下面給大家介紹C++?list常用接口和模擬實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧
    2025-04-04
  • C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解

    C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解

    這篇文章主要為大家介紹了C++面試八股文之STL標(biāo)準(zhǔn)模板庫(kù)使用詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Qt實(shí)現(xiàn)模糊匹配功能的實(shí)例詳解

    Qt實(shí)現(xiàn)模糊匹配功能的實(shí)例詳解

    對(duì)于瀏覽器的使用,我想大家一定不會(huì)陌生吧,輸入要搜索的內(nèi)容時(shí),會(huì)出現(xiàn)相應(yīng)的匹配信息。本文就來(lái)用Qt實(shí)現(xiàn)模糊匹配功能,感興趣的可以了解一下
    2022-10-10
  • C++程序代碼優(yōu)化的方法實(shí)例大全

    C++程序代碼優(yōu)化的方法實(shí)例大全

    優(yōu)化是一個(gè)非常大的主題,本文并不是去深入探討性能分析理論,算法的效率,這篇文章主要給大家介紹了關(guān)于C++代碼優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易圖書(shū)館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C 字符串?dāng)?shù)組排序的小例子

    C 字符串?dāng)?shù)組排序的小例子

    C 字符串?dāng)?shù)組排序的小例子,需要的朋友可以參考一下
    2013-03-03

最新評(píng)論

阳泉市| 和田市| 新河县| 鄂温| 探索| 铅山县| 福清市| 阳谷县| 永和县| 莱阳市| 桦甸市| 名山县| 崇左市| 临高县| 雷州市| 司法| 镇原县| 华容县| 登封市| 高碑店市| 贡山| 涡阳县| 锡林郭勒盟| 高安市| 乡宁县| 磐石市| 政和县| 莲花县| 元氏县| 邢台县| 丰台区| 肃南| 翼城县| 保亭| 密云县| 开阳县| 卢湾区| 隆尧县| 丽水市| 茶陵县| 毕节市|