回覆列表
-
1 # AngelWings165094691
-
2 # leang789
不同編譯器不一樣,早期編譯器有區別,現代編譯器的區別就不大了。十年前大家津津樂道的i++和i--,現在編譯出來的程式碼都一樣了。除非你還用一些小眾的晶片,編譯器不成熟的,否則真沒必要糾結這個。有這個時間還不如多看看程式設計方法,把框架結構做好。
-
3 # 曲終乆散14827337
今天也想到這個問題,如果不考慮編譯器最佳化,我認為!x會編譯成jnz label指令,x==10會編譯成cmp x,0,jne label指令,具體對不對,我不搞微控制器,也沒時間去反彙編
-
4 # looklookdq
keil 配stc低端晶片試了一下,不最佳化,前者直接是挪到累加器中,然後判零跳轉,後者是先把兩數挪到工作暫存器裡,然後把其中一個從工作暫存器挪到累加計器,再把另一個從工作暫存器與累加器位或,再零跳
-
5 # Suaig
要看編譯器的,從直接彙編角度前面更快。
另外,程式碼是寫給人看的,我覺得後一種可讀性更高。這點速度的差異完全不如少用一個delay開的划算。
cpu 判斷彙編語句為邏輯操作時 改變的 只是 暫存器的 邏輯符號! 所以 都一樣 速度!所謂最佳化 只是邏輯變數學 我舉個例子 cmp x.0 jnz 和 sub x,1 jae 這兩句 都可以實現比較,只是 一個是邏輯 一個是數學 非要說速度 那肯定是 數學直接!