Las: Largos LMM Assembler
Ever since coming up with the Large Memory Model in 2006 I’ve needed a good tool for writing LMM code. Other priorities intervened, but now I’ve finally had time to finish it - I expect to release an “alpha” test release by the end of this week.
Las currently runs on Windows, but will later also run on x86 Linux and OSX.
I will be updating this page with Las news and features as they become available.
Las Supports:
- full Propeller instruction set
- all Propeller condition prefixes
- all Propeller effect codes
- Pasm compatible storage allocation
- Parallax “.binary” output format
- Generating “COG” cog-only code
- “LMM” code for HUB or XMM
- hosted on Windows
Extensions:
- native support for LMM instruction set extensions
- automatically translates following ops to correct kernel calls and in-line constants in LMM mode
- JMP
- CALL
- RET
- LDI
- PUSHI
- PUSH
- POP
- YIELD
- HALT
- SYS
- LIBCALL
- additional pseudo operations for easier programming
- CACHE/ENDCACHE block generated FCACHE and long count
- Largos relocatable LMM executable format
Planned Extensions:
- Macros
- linkable object file format
- Linux support (for x86)
- OSX support (for x86)
Available Pseudo Operations:
- $INCLUDE - include headers and/or other assembler source
- OUTPUT - choose “IMAGE” (.binary) or “OBJ” (LMM) output
- ORG - set hub origin
- EQU - set assembler symbol to a value
- COG - set cog origin and mode
- LMM - set LMM mode
- FIT - same as in pasm
- RES - same as in pasm
- END - mark end of file, optional
Coming Soon:
- IF - conditional assembly
- ELSE - else block
- ENDIF - end of conditional assembly block
- MACRO - start macro definition
- ENDM - end of macro definition
Storage Allocation:
- BYTE - byte storage, COG and LMM mode
- WORD - word storage, COG and LMM mode
- LONG - long storage, COG and LMM mode
Program Limits:
- 512 longs maximum in a COG section
- 512K longs in an LMM program (limit can be raised if needed)
- Source not available, I am using some proprietary code
- expression evaluation currently not working
- Can use 4MB or moreof memory while running, it was written for speed
- No linker (Largos Linker, lln, coming soon!)
I will be demonstrating Las at UPEW 2009!
Note:
You “$include registers.asm” at the top of your source code to have the standard Pasm and LMM registers defined.
Las verion 0.10 “Flying Pigs” pre-release