Shop OBEX P1 Docs P2 Docs Learn Events
LMM: is there a standard ??? — Parallax Forums

LMM: is there a standard ???

Bob AndersonBob Anderson Posts: 122
edited 2009-11-07 23:12 in Propeller 1
In the course of developing some extensions to PASM as an aid to writing PASM code...

AAC (Augmented Assembly Code)
http://forums.parallax.com/showthread.php?p=852239

I was questioned about the possibility of the tool emitting LMM code.

I found the question hard to answer because, to my knowlege, there is no standard method to meet the Large Memory Model objectives. But am I correct that there is no standard?

All LMM projects that I know about depend on a special kernel that resides in a cog and is used to supply the desired "largeness".· The commercial "c" compiler for the Propeller has to do this.· But is their kernel a "standard"?· Proprietary?· ???

Comments

  • BeanBean Posts: 8,129
    edited 2009-11-07 23:09
    You are right there is no standard. The kernel can be very simple, or complex. The main difference is that you can create special "op-codes" that get handled by the kernel.

    Things like jumps have to be coded specially, but for the most part instructions are coded just as are in regular PASM.

    I will soon have to seriously look into LMM since we want PropBASIC to use LMM in the future.

    Bean.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Does that byte of memory hold "A", 65, $41 or %01000001 ?
    Yes it does...


    ·
  • localrogerlocalroger Posts: 3,452
    edited 2009-11-07 23:10
    No there isn't a standard and yes, you need a kernal in a cog to drive it. The kernal basically rdlongs the next instruction to be executed into the kernal itself, then executes that instruction, then jumps back to do it again. PASM code being executed this way out of Hub RAM can't use normal PASM branching instructions because those would cause the kernal to branch out of the kernal, so that sort of thing is handled by PASM helper routines -- the LMM code uses a PASM branch to go to the helper, which may in turn fetch the next Hub Long and use it as the target for a real LMM jump. Since there are many ways of doing this, providing various efficiencies, there is no standard.
  • Bill HenningBill Henning Posts: 6,445
    edited 2009-11-07 23:12
    Hi,

    When I came up with LMM back in 2006, I deliberately only defined a minimal subset.

    There were two major reasons for this:

    1) to leave as much cog memory available as possible
    2) to allow customized kernels that are best fits for their particular purpose

    The closest thing to a standard is my initial minimal set of extended instructions, others have added to it for their own purposes.

    Best Regards,

    Bill
    Bob Anderson said...
    In the course of developing some extensions to PASM as an aid to writing PASM code...



    AAC (Augmented Assembly Code)

    http://forums.parallax.com/showthread.php?p=852239



    I was questioned about the possibility of the tool emitting LMM code.



    I found the question hard to answer because, to my knowlege, there is no standard method to meet the Large Memory Model objectives. But am I correct that there is no standard?



    All LMM projects that I know about depend on a special kernel that resides in a cog and is used to supply the desired "largeness". The commercial "c" compiler for the Propeller has to do this. But is their kernel a "standard"? Proprietary? ???
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full
    Morpheusdual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory IO board kit $89.95, both kits $189.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller
Sign In or Register to comment.