Thanks Eliot. Your linked article clears it up: http://www.mirandabanda.org/cogblog/2008/07/22/closures-part-ii-the-bytecodes/
140 10001100 kkkkkkkk jjjjjjjj Push Temp At kkkkkkkk In Temp Vector At: jjjjjjjj This fetches the local at offset j..j on the stack and push the k..k’th element in it. The next two store into the k..k’th element of the local at j..j, one version popping the result off the stack. This is a general convention in the Smalltalk-80 compiler. These are store and store-pop forms of almost every store opcode. The store form is used in the stores into vat and vax in things like var := vat := vax := expr whereas the pop form gets used in the store into var. 141 10001101 kkkkkkkk jjjjjjjj Store Temp At kkkkkkkk In Temp Vector At: jjjjjjjj 142 10001110 kkkkkkkk jjjjjjjj Pop and Store Temp At kkkkkkkk In Temp Vector At: jjjjjjjj The final bytecode is more interesting. The wording is unclear to me: "This fetches the local at offset j..j on the stack and push the k..k’th element in it." Does it mean, get local at index j..j and push onto the stack the k..k'th element in it? So 109 <8C 00 01> pushTemp: 0 inVectorAt: 1Get temp at 1 (j..j) and push element at 0 (k..k) ?? 97 <8E 00 01> popIntoTemp: 0 inVectorAt: 1 get vector at temp index 1 (j..j) and pop and store stack value into element 0 (k..k) ?? _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Hi James,
perhaps you could use the implementations of ContextPart pushRemoteTemp:inVectorAt: popIntoRemoteTemp:inVectorAt: storeIntoRemoteTemp:inVectorAt: (& Interpreter pushRemoteTemp:inVectorAt: popIntoRemoteTemp:inVectorAt: if you have them to hand) as the spec and check the documentation. The intent is that k..k is the index of the temp containing the remote vector and j..j is the index in the remote temp vector.
cheers Eliot 2010/8/29 James Ladd <[hidden email]>
_______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Free forum by Nabble | Edit this page |