You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Notch will release the newer spec soon (the draft is available here), so the stdlib has to be updated to match with that spec.
Major changes for stdlib:
PUSH and POP has been merged (for now), bulk memory operation abusing SP won't work as is.
Also the evaluation order of operands has been swapped. Combined with the merger of PUSH and POP this will break almost every code that abuses SP.
We now have signed operations. Maybe useful for some cases (given that -1 is available for operands).
SP-relative addressing is available, and it does not cost an additional cycle (in the current spec at least). The affects of this change are to be determined of course.
Literal as the first operand to get unbranched comparison is not gone, but now slightly inefficient for some cases (no short literal allowed).
Trivial assembler changes. (Don't think s/\<O\>/EX/g will work, though)
The text was updated successfully, but these errors were encountered:
Merger of PUSH and POP: I was entirely unaware of this. The only time, however, when it made sense to use 'POP' as the first operand in a basic operation was doing comparisons, so this should hopefully not be much of an issue. Does anyone know what 'PICK' is supposed to do?
SP relative addressing : The benefits of this are dependent on the calling convention(s) we choose.
Ah! So it's a mnemonic for SP+n, just as push is for --SP, etc? That makes sense.
As for it's usefulness; those 'few cases' are any time something is stored on the stack. SP+n lets me reference a stack location in no additional cycles. Notice that the most efficient way to reference stack locations without SP+n is that store SP in another register and use relative addressing on that - which DOES cost additional cycles.
Notch will release the newer spec soon (the draft is available here), so the stdlib has to be updated to match with that spec.
Major changes for stdlib:
s/\<O\>/EX/g
will work, though)The text was updated successfully, but these errors were encountered: