LONG

Designator: Declare long-sized symbol, long aligned/sized data, or read/write a long of main memory.

VAR
   LONG Symbol < [Count ] >


DAT
   < Symbol > LONG Data < [Count>


((PUBPRI))
   LONG [BaseAddress] < [Offset ] >

  • Symbol is the desired name for the variable (Syntax 1) or data block (Syntax 2).
  • Count is an optional expression indicating the number of long-sized elements for Symbol (Syntax 1) or the number of long-sized entries of Data (Syntax 2) to store in a data table.
  • Data is a constant expression or comma-separated list of constant expressions.
  • BaseAddress is an expression describing the long-aligned address of main memory to read or write. If Offset is omitted, BaseAddress is the actual address to operate on. If Offset is specified, BaseAddress + Offset * 4 is the actual address to operate on.
  • Offset is an optional expression indicating the offset from BaseAddress to operate on. Offset is in units of longs.

Explanation

LONG is one of three multi-purpose declarations (BYTE, WORD, and LONG) that declares or operates on memory. LONG can be used to:

  1. declare a long-sized (32-bit) symbol or a multi-long symbolic array in a VAR block, or
  2. declare and initialize long-aligned, and/or long-sized, data in a DAT block, or
  3. read or write a long of main memory at a base address with an optional offset.

Range of Long

Memory that is long-sized (32 bits) can contain a value that is one of 232 possible combinations of bits (i.e., one of 4,294,967,296 combinations). The Spin language performs all mathematic operations using 32-bit signed math, meaning every long value is considered to be in the range -2,147,483,648 to +2,147,483,647. However, the actual numeric value contained within a long is subject to how a computer and user interpret it. In Propeller Assembly a long value can be treated as both signed and unsigned.

Unless otherwise noted, content on this site is licensed under the
Creative Commons Attribution-ShareAlike 4.0 International License.