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

If you liked this article, please help us grow! "Like" us and let your friends know with the Twitter and Facebook buttons at the top left - We appreciate your support!