Contents|Index|Previous|Next

Initialized data

What follows are the GASP directives for initialized data, and the standard GNU assembler directives to which they expand.

.DATA expr, expr,...
.DATA.B expr, expr,...
.DATA.W expr, expr,...
.DATA.L expr, expr,...
Evaluate arithmetic expressions expr, and emit the corresponding as directive (labeled with lab). The unqualified .DATA emits .long; .DATA.B emits .byte; .DATA.W emits .short; and .DATA.L emits .long.
For example, foo .DATA 1,2,3 emits foo: .long 1,2,3.

.DATAB repeat, expr
.DATAB.B repeat, expr
.DATAB.W repeat, expr
.DATAB.L repeat, expr
Make as emit repeat copies of the value of the expression expr (using the as directive .fill). .DATAB.B repeats one-byte values; .DATAB.W repeats two-byte values; and .DATAB.L repeats four-byte values. .DATAB without a suffix repeats four-byte values, just like .DATAB.L.
repeat must be an absolute expression with a positive value.

.SDATA "str"...
String data. Emits a concatenation of bytes, precisely as you specify them (in particular, nothing is added to mark the end of the string). See String and numeric constants for details about how to write strings.
.SDATA concatenates multiple arguments, making it easy to switch between string representations. You can use commas to separate the individual arguments for clarity, if you choose.

.SDATAB repeat, "str"...
Repeated string data. The first argument specifies how many copies of the string to emit; the remaining arguments specify the string, in the same way as the arguments to .SDATA.

.SDATAZ "str"...
Zero-terminated string data. Just like .SDATA, except that .SDATAZ writes a zero byte at the end of the string.

.SDATAC "str"...
Count-prefixed string data. Just like .SDATA, except that GASP precedes the string with a leading one-byte count. For example, .SDATAC "HI" generates .byte 2,72,73. Since the count field is only one byte, you can only use .SDATAC for strings less than 256 bytes in length.