C'è un modo in .NET, usando Reflection.Emit
, per accedere all'elemento più in alto-uno dalla pila? Quindi se A è il più in alto e B il prossimo - Voglio elaborare B poi A. Sarebbe bello duplicare B sopra A (dato che posso semplicemente "inserire" il secondo B quando arrivo ad esso).Reflection.Emit - accede all'ultimo elemento ma-one dallo stack
Attualmente, sto dichiarando un locale:
LocalBuilder loc = il.DeclareLocal(typeof(Foo));
il.Emit(OpCodes.Stloc, loc); // store and pop topmost stack item
// work with (pop) previous stack item
il.Emit(OpCodes.Ldloc, loc); // push old topmost stack item
C'è un percorso che non ha bisogno locale esplicito?
Per il "perché" - questo è nel codice generato che dovrebbe introdurre più gente del posto che voglio. Se potessi utilizzare la parte superiore dello stack, potrei risparmiare quantità non banali di spazio nello stack (i locali sono riservati indipendentemente dall'utilizzo, AFAIK). –