這幾天跟同事在實作 IC 的 ROM code 時遇到一個難纏的問題,後來發現與 ARM 的 pipeline 機制有關係,問題是這樣的,看看以下的程式碼(實際上作了什麼事不重要,主要在流程): int SDRM_BN_Cmp ( SDRM_BIG_NUM * BN_Src1, SDRM_BIG_NUM * BN_Src2 ) { effecda8 : e92d4008 push { r3, lr } effecdac : e1a02000 mov r2, r0 effecdb0 : e1a0e001 mov lr, r1 if ( BN_Src1 - >Length > = BN_Src2 - >Length ) { effecdb4 : e5903004 ldr r3, [ r0, #4] effecdb8 : e591c004 ldr ip, [ r1, #4] effecdbc : e153000c cmp r3, ip effecdc0 : ...