Futurebasic/Language/Reference/push

From Wikibooks, open books for an open world
Jump to navigation Jump to search

PUSH[edit | edit source]

statements[edit | edit source]

Syntax[edit | edit source]

PUSH(var)
PUSH {BYTE|WORD|LONG}(address&)

Description[edit | edit source]

These statements put 1, 2 or 4 bytes onto the CPU stack, and adjust the stack pointer by a corresponding amount. PUSH is the opposite of POP.

If you use the first syntax, the data is copied from var, which must be a variable. The number of bytes put onto the stack depends on the data type of var:

"Image Was Here"

(No other variable types are valid with PUSH(var).)

If you use the second syntax, the data is copied from the memory which begins at address&, which must be a long integer expression or a POINTER variable. The number of bytes put onto the stack depends on which keyword you use:

"Image Was Here"

In CPU68k compiles, PUSH always adjusts the stack pointer by an even number of bytes. If you use PUSH(byteVar) or PUSH BYTE(address&) in a CPU68k compile, the stack pointer will be adjusted by 2 bytes, even though only one byte is copied from byteVar or address&.

PUSH is meant for careful use by advanced programmers. Your system can crash if the stack pointer is not adjusted carefully.

See Also[edit | edit source]

POP