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

c語言switch反匯編的實現(xiàn)

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

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

一、switch語句

1、在正向編碼時,switch語句可以看做是if語句的簡寫

在這里插入圖片描述

2、break在switch語句的妙用

1、當switch存在3個分支時

在這里插入圖片描述

當去掉break的時候

在這里插入圖片描述

二、switch語句的反匯編

1、當switch存在3個分支時

#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;
}

在這里插入圖片描述

可以看出,此時switch的反匯編代碼與if語句無異。
當有四個if語句的時候就會生成大表。

在這里插入圖片描述

2、當switch語句出現(xiàn)四個分支時,編譯器會產(chǎn)生大表

步驟:

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

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

分支少于四個,則switch無意義,編譯器會按if…else…語句進行反匯編
case后的常量的順序不影響大表的生成

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

正向代碼

在這里插入圖片描述

匯編代碼

在這里插入圖片描述

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

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

正向代碼是這樣的

在這里插入圖片描述

這里可以看到有幾個地址是一樣的

在這里插入圖片描述

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

在這里插入圖片描述

3、當switch存在多個分支,常量連續(xù)性相對不高時

在這里插入圖片描述

就會生成小表

在這里插入圖片描述

步驟:

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

補充:當case后的常量差距較大時

編譯器按照if…else…進行反匯編

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

相關文章

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

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

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

    C++進程的創(chuàng)建和進程ID標識詳細介紹

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

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

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

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

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

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

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

    C++面試八股文之STL標準模板庫使用詳解

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

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

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

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

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

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

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

    C 字符串數(shù)組排序的小例子

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

最新評論

大安市| 丘北县| 泾阳县| 林芝县| 读书| 定襄县| 桦甸市| 黄平县| 蓝山县| 铜陵市| 韩城市| 滕州市| 遵义县| 廉江市| 清水河县| 武城县| 绵阳市| 佛坪县| 延川县| 贡觉县| 无锡市| 石棉县| 佛坪县| 蒙阴县| 连南| 彰化县| 黎平县| 和林格尔县| 彝良县| 慈溪市| 北海市| 杨浦区| 菏泽市| 丰城市| 临江市| 阜南县| 济宁市| 金阳县| 芦溪县| 玉龙| 同仁县|