我在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)来获得正确的灵感:) –