Useful stuff:

Current Status:

Version 1.0

LAC is my attempt to create a tool that supports an assembly syntax that's easier to read than standard assembly. My original attempt to create portable executables foundered due to lack of development time, so I converted the Legible Assembler to a Legible Assembly Converter, which translates a more legible assembly syntax to gas-compatible assembly. As of version 1.0, LAC has moved from alpha status to beta status. Although it does work, so far I've only added two instructions to the instruction list. More instructions will be forthcoming; this is more or less a proof of concept version. This also means that minimal, but not rigorous, testing has been completed.

Here's an example of what an input file might look like:

#bss varname 8 bytes integer varname2 8 bytes float #data message `Hello, world!\n` // null-terminated string message2 5 // integer literal message3 0.1 // floating-point literal message4 h0A // hexadecimal-formatted integer literal message5 b01010101 // binary-formatted integer literal #text nop add 2 to @EAX // registers begin with the @ symbol @EAX = @EAX + 2 :label // labels begin with colons .compiler directive // compiler directives begin with periods

Additional Notes

LAC supports simple expressions; addition, subtraction, multiplication and division. It doesn't and won't support more complicated expressions; every line in LAC represents one line of standard assembly code. Compiler directives are not checked; they are simply copied to the target file without alteration.

For simplicity, advanced features like macros, control flow and automatic optimization won't be included.

Along the way, I also created a literate programming tool (o), and I used this tool to help me create LAC version 1.0. The download zip for LAC contains both literate and non-literate versions of the source code.



Rationale:

Here are my reasons/excuses for the various choices I've made in this project.


about the author (o)



GPLv3