這裡是 asm版,先用 asm的方式說明
一般來說在組語 快的程式通常大而且直觀,相反的慢的程式通常小
這是單純的拿程式空間來換取速度,當你只有 1K時,別說用 JMP了
直接 PC跳躍都會拿來用。
但在 C語言就不同了,編譯器會編出什麼鬼玩意很少人會去探討
傳統上會希望寫程式的人能夠模組化結構化,都用function的寫法
不用去管Stack炸掉的問題
但是
進入 function(CALL)和返回 return(RETFIE)實際上是很慢的,還不如用goto(JMP)
很多人很痛恨goto,說會破壞結構,但在單晶片下這被編譯後玩意跑的很快
在需要快的情況且必要可讀性下,只能狂用 macro或善用前處理器來處理
麻煩的事情,如位元讀取或變換
macro就是浪費空間且好讀,但就是快,畢竟不是所有編譯器都支援 inline的寫法