<feed xmlns='http://www.w3.org/2005/Atom'>
<title>torque-asm/src/stages, branch v3.0.0</title>
<subtitle>Lightweight meta-assembler</subtitle>
<id>https://code.benbridle.com/torque-asm/atom?h=v3.0.0</id>
<link rel='self' href='https://code.benbridle.com/torque-asm/atom?h=v3.0.0'/>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/'/>
<updated>2025-10-15T00:25:28Z</updated>
<entry>
<title>Raise an error if recursion depth exceeds a maximum value</title>
<updated>2025-10-15T00:25:28Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-15T00:25:28Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=a4c2b3ae304dc53e8e52cc952383b5171ce00b99'/>
<id>urn:sha1:a4c2b3ae304dc53e8e52cc952383b5171ce00b99</id>
<content type='text'>
This is preferable to having the assembler crash with a stack overflow
error, because the user can now see which invocation caused the
overflow.
</content>
</entry>
<entry>
<title>Fix incorrect first segment address</title>
<updated>2025-10-15T00:15:27Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-15T00:15:27Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=c62da877b370392accfbd8a1087ad5673b6f55e4'/>
<id>urn:sha1:c62da877b370392accfbd8a1087ad5673b6f55e4</id>
<content type='text'>
Previously, if the first intermediate token in a program was a pinned
address, the address was being discarded and address zero was being
pinned instead.
</content>
</entry>
<entry>
<title>Remove string-style argument syntax from error message</title>
<updated>2025-10-14T23:57:43Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-14T23:57:43Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=e010ea0cc5e3e8ec210d5e469ad4a41296fc4d50'/>
<id>urn:sha1:e010ea0cc5e3e8ec210d5e469ad4a41296fc4d50</id>
<content type='text'>
The string-style argument syntax is no longer supported, it has been
replaced with a list-style syntax (using square brackets instead of
double-quotes).
</content>
</entry>
<entry>
<title>Implement new bytecode stage</title>
<updated>2025-10-14T08:33:42Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-14T08:33:30Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=d9e0c4895608cdcb04b868222b49b3f117766ed0'/>
<id>urn:sha1:d9e0c4895608cdcb04b868222b49b3f117766ed0</id>
<content type='text'>
This completes the Torque version 3 rewrite, other than some extensive
testing that is yet to be done.
</content>
</entry>
<entry>
<title>Implement new intermediate stage</title>
<updated>2025-10-14T08:05:05Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-14T07:40:39Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=981bb70e5077bd30ef85a0092117a875dcc614fc'/>
<id>urn:sha1:981bb70e5077bd30ef85a0092117a875dcc614fc</id>
<content type='text'>
Massive improvement. Label references can be used anywhere in the
program, with the program being assembled repeatedly until all labels
have stabilised. The bytecode stage will just be a tiny stage tacked
onto the end, rather than the old bytecode stage that would resolve
labels and expressions.
</content>
</entry>
<entry>
<title>Track more information with SymbolParser</title>
<updated>2025-10-14T03:54:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-13T06:22:36Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=d95f62157bc17ee8aad12aa8887315766207c326'/>
<id>urn:sha1:d95f62157bc17ee8aad12aa8887315766207c326</id>
<content type='text'>
To be able to re-use the symbol parser code in the intermediate stage
in order to quickly find all symbol definitions and invocations in the
program (in particular now that macro definitions are indistinguishable
from label definitions, since they can both follow references), the
symbol parser now tracks additional information about each symbol
(argument count, torque-specific role, and parent macro definition).
</content>
</entry>
<entry>
<title>Implement lists as a first-class type</title>
<updated>2025-10-14T03:54:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-13T05:14:51Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=0f32d50293ffb1a990acf9eec128415ba54a9561'/>
<id>urn:sha1:0f32d50293ffb1a990acf9eec128415ba54a9561</id>
<content type='text'>
Previously, strings were implemented as lists of integers, but there
was no way to create an arbitrary list of integers to pass to a macro
invocation.

This commit extends the []-delimited expression syntax, treating
expressions that contain only integers and invocations as lists of
integers. Strings are implemented as a sub-type of list.
</content>
</entry>
<entry>
<title>Change string argument syntax to list argument syntax</title>
<updated>2025-10-14T03:54:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-13T03:02:33Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=a051139f6d59cbc77eff99e9417dc21d87eaba6a'/>
<id>urn:sha1:a051139f6d59cbc77eff99e9417dc21d87eaba6a</id>
<content type='text'>
Changes string arguments from "name" to [name], to prepare for generic
lists in the language. Doesn't compile.
</content>
</entry>
<entry>
<title>Allow a macro invocation to precede the macro definition</title>
<updated>2025-10-14T03:54:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-13T00:50:19Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=647b10dc6c2efb2bc59f64dfef07fa5a18d24f77'/>
<id>urn:sha1:647b10dc6c2efb2bc59f64dfef07fa5a18d24f77</id>
<content type='text'>
There is no longer any reason to enforce this restriction. This will
allow the use of more complex macro recursion by programs.
</content>
</entry>
<entry>
<title>Include argument count in the signature of a symbol</title>
<updated>2025-10-14T03:54:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-10-13T00:47:42Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/torque-asm/commit/?id=2cc7d4d11a596798f8271f5c0b8a6e8941c32fb6'/>
<id>urn:sha1:2cc7d4d11a596798f8271f5c0b8a6e8941c32fb6</id>
<content type='text'>
This is done by suffixing the argument count to the symbol name using
the ':' separator character, which can't normally be used in a symbol.
</content>
</entry>
</feed>
