Stack Manipulation
Since all words operate using parameters on the stack, Forth provides tools for the programmer to change the contents of the stack, or to alter the order of values on the stack.
The Forth word .s
shows the current stack without removing any entries. This is a useful tool for the programmer, enabling you to nondestructively monitor the stack.
Other useful stack words are dup
(duplicate the entry on top of the stack), drop
(discard the entry on top of the stack), swap
(exchange the two top entries on the stack), and over
(copy the second-to-the-top entry to the top of the stack).
For example, entering 5 dup results in 5 5 on the stack. 3 4 swap results in 4 3 on the stack. 1 2 over results in 1 2 1 on the stack. dup is most often used to preserve stack entries when they are used with words that remove values from the stack. For example, here is Forth code that prints out the ASCII character A with its corresponding numeric code:
65 dup emit space . cr
Since both emit
and . take a parameter from the stack, a dup is required to produce two copies of the required operand.
?dup will duplicate the top of the stack only if it isn't zero. 2dup will duplicate the top two stack entries. For example:
10 23 2dup
gives:
10 23 10 23
Similarly 2swap, 2over, and 2drop also operate on the top two stack entries.
The Forth word rot
rotates the third stack parameter to the top. For example:
1 2 3 rot
results in:
2 3 1
The word -rot rotates the other way and is, in effect, the exact opposite ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access