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
The add operator (<fontcolor="green">+</font>) has subtle timing. If you really care about space or time, you can sometimes optimize it.
<p><fontcolor="green">+</font> (and <fontcolor="green">+*</font>) must have had time for carry to propagate. This usually requires that a <fontcolor="green">.</font> instruction preceed it. But you don't need a <fontcolor="green">.</font> if <fontcolor="green">+</font> is<ul>
<li>the first instruction of a definition
<li>the first instruction returning from a definition
<li>following <fontcolor="green">if -if next unext</font>
<li>following a <fontcolor="green">then</font> that's preceeded by a <fontcolor="green">;</font>
<li>in slot 3
<li>in slot 0, following a literal (<fontcolor="green">@p !p</font>) in slot 3
<li>following a <fontcolor="green">dup</font> (no ripple)
</ul>
If you know carry won't ripple more than 9 places, you don't need a <fontcolor="green">.</font> But this is difficult to know, since it matters what number was in S before the latest push. (Carries were established which may have to be changed.)
<p>Here's an example<ul>
<li><fontcolor="green">fff fff .. 0 +</font></ul>
The 2 fffs establish carries. Rippling for the <fontcolor="green">0</font> starts at the end of slot 0, but won't be finished by the end of slot 1. The result is 011ff instead of fff. Grossly incorrect.
<p><b><fontcolor="red">If in doubt, use a <fontcolor="green">.</font></b></font>