054b9c87e1
This takes literal integers, not expressions, because each machine defines its own valu_t for expressions, but valu_t can be too narrow for an 8-byte integer, and I don't want to change all the machines to use a wider valu_t. Instead, change how the assembler parses literal integers. Remove the NUMBER token and add a NUMBER8 token for an int64_t. The new .data8 pseudo emits all 8 bytes of the int64_t; expressions narrow the int64_t to a valu_t. Don't add any checks for integer overflow; expressions and .data* pseudos continue to ignore overflow when a number is too wide. This commit requires int64_t and uint64_t in the C compiler to build the assembler. The ACK's own C compiler doesn't have these. For the assembler's temporary file, add NUMBER4 to store 4-byte integers. NUMBER4 acts like NUMBER[0-3] and only stores a non-negative integer. Each negative integer now takes 8 bytes (up from 4) in the temporary file. Move the `\fI` and `\fP` in the uni_ass(6) manual, so the square brackets in `thing [, thing]*` are not italic. This looks nicer in my terminal, where italic text is underlined. |
||
---|---|---|
.. | ||
6500_as.6 | ||
6800_as.6 | ||
6805_as.6 | ||
6809_as.6 | ||
em_cg.6 | ||
em_ncg.6 | ||
head | ||
i80_as.6 | ||
i86_as.6 | ||
i386_as.6 | ||
libmon.7 | ||
libpc.7 | ||
m68020_as.6 | ||
ns_as.6 | ||
pc_prlib.7 | ||
pdp_as.6 | ||
powerpc_as.6 | ||
proto.make | ||
uni_ass.6 | ||
vc4_as.6 | ||
z80_as.6 | ||
z8000_as.6 |