Hi,
I've read in ECMA that the CIL validation requires that the evaluation stack
should be empty at any instruction following an unconditional branch (e.g.
br).
However, in the following example - accepted by the verifier !! - the
evaluation stack is not empty - it does contain an integer:
ldc.i4.4
IL_0006: pop
ldc.i4.3
IL_0010: br.s IL_0006
It is clear that at IL_0006, there is an "int" on the evaluation stack. Why
it is accepted by the verifier? Or maybe I have a wrong understanding of ECMA
...
Please someone help me with an idea.
Thanks.
George
Mike - 25 Feb 2005 12:55 GMT
Hi George,
> I've read in ECMA that the CIL validation requires that the evaluation stack
> should be empty at any instruction following an unconditional branch (e.g.
[quoted text clipped - 10 lines]
> It is clear that at IL_0006, there is an "int" on the evaluation stack. Why
> it is accepted by the verifier? Or maybe I have a wrong understanding of ECMA
What the spec. is saying is that the evaluation stack at IL_0012
(following you br.s) must be empty, not that the evaluation stack at the
branch destination (IL_0006) must be empty.
Regards
Mike