es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es el cambio de descripción de la pila de evaluación CIL “PopI8+Pop8” un error de especificación?

En la especificación CIL/MSIL ECMA-335, hay una lista de descripciones utilizadas en la columna “Comportamiento de la pila” del archivo opcode.def para describir qué valores se eliminan de la pila de tiempo de ejecución para cada operación. Página 483 de la especificación:

VI.C.2 Descripciones de opcodes CIL

Se eliminan datos de la pila para calcular el resultado de estas operaciones. Los valores posibles son los siguientes: \
… \
h. PopI8+Pop8 – El elemento superior de la pila es un entero de 8 bytes, el siguiente es un puntero nativo \
i. PopI+PopR4 – El elemento superior de la pila es un número en coma flotante de 4 bytes, el siguiente es un puntero nativo \
j. PopI+PopR8 – El elemento superior de la pila es un número en coma flotante de 8 bytes, el siguiente es un puntero nativo \
… \
n. PopRef+PopI+PopI8 – El elemento superior de la pila es un entero de 8 bytes, luego un entero de tamaño nativo, luego una referencia a un objeto

Parece que “h. PopI8+Pop8” es un error en la especificación. En todas las macros “OPDEF()” no hay referencias a “Pop8”, por lo que no es un “valor posible”. Basándonos en la descripción textual “h.” y en la inferencia del resto de la especificación:

  • “El elemento superior de la pila es un entero de 8 bytes” -> PopI8
  • El siguiente es un puntero nativo -> PopI

¿Entonces el valor para “h.” debería ser “PopI+PopI8”?

Eso coincide con el código de op code “stind.i8” en opcode.def:

OPDEF(CEE_STIND_I8, “stind.i8”, PopI+PopI8, Push0, InlineNone, IPrimitive, 1, 0xFF, 0x55, NEXT)

Ya que “PopI+PopI8” no está en la lista con las otras descripciones.


Si esto es un error, ¿hay alguna corrección en ECMA o MSDN o GitHub que liste las soluciones?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que pueda haber una errata o una actualización de documentación con respecto a este problema, pero se necesitaría una investigación adicional para determinar si existen recursos de este tipo.

Comments are closed.