計算機有沒有對if語句的檢查進行優化?

時間 2021-05-11 13:52:18

1樓:sinbad Lee

這問題,我不敢亂回答,雖然我看過intel 3大捲,學過X86彙編,可是這問題如果對高階語言,編譯原理,CPU指令架構不了解的人不敢亂說的。畢竟我就是個混出來的小本。

2樓:「已登出」

if (condition)

aelse

bend

這樣的語法在不優化的情況下會被翻譯成形如這樣condition

jncc _else

ajmp _end

_else:

b_end:

或者形如這樣

condition

jcc _if

bjmp _end

_if:

a_end:

如果說這裡有優化的話,大多數情況下也就是在條件的計算和條件跳轉指令的選擇上吧

另外如果編譯器可以確定if裡面的condition一定為真/假,那麼兩個分支裡面會有乙個直接被優化掉

很多指令集有除了條件跳轉以外的其他條件指令,比如條件賦值和條件運算什麼的,比如cmov,如果後面的形式比較好的話可能會優化成這些指令……不過感覺這個有點苛刻,而且編譯器不一定做得到……然而arm的條件指令是真的多……

3樓:

x64有一種叫做conditional move的指令用來避免分支判斷,從而避免指令跳轉給流水線效率帶來的影響。

但是這不是什麼時候都能用的,只能在兩個條件的值的計算沒有額外作用且計算代價很低的時候。

高中沒學過計算機的報計算機專業有沒有前途?

一水 計算機的本質其實是數學,地地道道的數學,完完全全的數學,你說的那台被叫做計算機的機器,有位科學大佬曾經說過 電腦科學不是計算機,就與天文學不是望遠鏡一樣。電腦科學的本質和數學是一樣的。所以只要你在高中時數理化都學得懂,大學的計算機課程對你來說就沒有理解上的障礙。至於前途,任何乙個專業只要學精通...

本人計算機系大二在讀,想考證了,有沒有計算機大牛推薦一下考什麼證價效比高,不會太難的?

平凡的極客人 大一新生包括大二的有許多考證的疑問,到底要不要考。我想說你自己想想上大學是為了什麼,為了找工作,在21世紀,除了學校你不能選擇之外,你還能拼什麼,畢業之後拿著光禿禿的畢業證找工作,你跟其他人比有什麼優勢,老闆為什麼選擇你!都說現在流行線上教育,咱也不敢說,咱也不好問!但是我覺得任何事情...

沒有接觸過程式設計,計算機之類的,可以選擇計算機方面的專業嗎?

你喜歡語文嗎?知道怎麼提取一篇文章的中心思想嗎?知道怎麼抓住一篇文章的重點,同時又不忽略細節嗎?你喜歡數學嗎?你知道邏輯三段論嗎?你知道與 或 非分別是什麼意思嗎?你喜歡英語嗎?不求你能說能寫,你能在借助詞典的基礎上看懂一篇英語文章嗎?和語文一樣,能提取文章的中心思想嗎?能抓住一篇英語文章的重點同時...