我在C以下流程:實現一個流 「(1)如果{...}否則,如果{...} ...(2)」 在大會
// some stuff1
//................
if (something1) {
func1();
func2();
} else if (something2) {
func3();
func4();
}
// some stuff2
我不知道,我如何在Assembly中編碼?我的意思是,不是確切的入侵,而是流量。我應該使用標籤跳轉到內部if(something1){...}和「else if(something2)」嗎?我將如何返回到「//一些stuff2」?
; some stuff1
; and then
cmp [some_struc], SOME_CONST
je .... ????
cmp [some_struc], SOME_CONST2
je .... ????
; some stuff2
; how to better get back here?
cmp rax, 0
或者我應該將它們稱爲函數嗎?那麼我將如何跳過第二個「else if(something2){」如果第一個是真的?
我可以以某種方式實施,但我想知道如何更好地做到這一點。
使用標籤是最明確的方法。 x86沒有進行有條件的調用,所以你最終會使用標籤。如果你喜歡,你可以在組裝之前用C * goto *嘗試。你也可以[參考一個編譯器](https://godbolt.org/g/h4iUR2)來獲得正確的靈感:) –