我正在尝试生成动态方法。假设我arg
在堆栈中有布尔值。我想调用一个接受类型参数的方法,该参数将通过简单的规则int
从该值转换。对于一些示例代码,生成的 IL 代码如下:bool
arg ? 1 : 0
//bool value is already pushed into stack
IL_003d: brtrue.s IL_0042
IL_003f: ldc.i4.0
IL_0040: br.s IL_0043
IL_0042: ldc.i4.1
IL_0043: callvirt --methodName--
发射时OpCodes.Brtrue_S
,OpCodes.Br_S
如何正确识别要跳转到的偏移量?