在CIL中,为什么BGE等于CLT.UN,然后是BRFALSE?

bas*_*sdp 6 .net c# cil

在CLI规范(ECMA-335,第329页)以及MSDN上,声明CIL操作码bge相当于执行clt.un后跟brfalse.

这令我感到困惑.我不明白为什么等价的是无序的clt.un,而不是常规的clt.特别是考虑到还有一个bge.un,它没有说明一套等效的指令.我希望bge等于[ clt,brfalse ],而bge.un等同于[ clt.un,brfalse ].

这是规格中的错误还是我遗漏了什么?

Cod*_*ter 3

该 PDF 指出:

指令的效果bge target等同于:

  • 如果堆栈操作数是整数,则clt后跟brfalse目标
  • 如果堆栈操作数是浮点型,则clt.un后跟brfalse目标