Errors in Spin Byte Code wiki page?
johnfos
Posts: 59
I think there are a couple of minor errors in the wiki page for Spin byte code: http://propeller.wikispaces.com/Spin+Byte+Code
I'm willing to edit the page if any expert out there can reassure me that I won't be perpetrating an error instead of fixing one.
1. In the big table, opcodes 8c to 8f are listed as PUSH_INDEXED_LOCALMEM_BYTE, POP_(ditto), EFFECT_(ditto) and REFERENCE_(ditto). I think these four should have the _INDEXED deleted.
2. Earlier, under the heading "Structure of UPPER opcodes" and under the sub-heading "Structure of Memory ops", the description of S-field contains the sentence "Used only if I-field is 1." I think that sentence should be deleted.
Anyone care to confirm or dispute?
I'm willing to edit the page if any expert out there can reassure me that I won't be perpetrating an error instead of fixing one.
1. In the big table, opcodes 8c to 8f are listed as PUSH_INDEXED_LOCALMEM_BYTE, POP_(ditto), EFFECT_(ditto) and REFERENCE_(ditto). I think these four should have the _INDEXED deleted.
2. Earlier, under the heading "Structure of UPPER opcodes" and under the sub-heading "Structure of Memory ops", the description of S-field contains the sentence "Used only if I-field is 1." I think that sentence should be deleted.
Anyone care to confirm or dispute?
Comments
On #2, I'm not quite convinced. As I see it, the SS field has two effects. It specifies the size of the memory location to be accessed, and if the I field is set it also determines the amount by which the index is shifted. The first effect applies to all the memop instructions, which is why I thought the sentence should be deleted.
I'd be happy to replace it with a clarification, maybe:
S-field: Size of address operand. 00: Byte; 01: Word; 10: Long; 11: illegal (would be a math op). If the I-field is set to 1, the index value is shifted left by S bits.