Shop OBEX P1 Docs P2 Docs Learn Events
P2LLVM Update — Parallax Forums

P2LLVM Update

I'm "releasing" v0.5 of p2llvm and wanted to give an update on where I am at with it. Release is here: https://github.com/ne75/p2llvm/releases/tag/v0.5 (I don't have built binaries, only the source).

The major improvements are:

  • Plenty of bug fixes in function lowering, stack usage, branch analysis, and assembly parsing.
  • More complete assembly parsing. Not fully conformant to PASM2 yet but getting there.
  • Improved optimization of using AUGS/AUGD directly with target instruction (rather than first moving to a register)
  • Placement of the runtime library into LUT so every cog always has access to it (before only non-native cogs could use it)
  • Use PTRx expressions exclusively for stack access.
  • Started work on a compatible debugger.

I intend to continue to improve and maintain this project as I can, even if no one else uses it. But if you do try it out, please let me know, especially if you find bugs or issues, I'd love to fix them (if I can). Or, if there's a feature that would be useful, I'd love to add it.

At some point, I think I want to write a somewhat formal ABI so that common things (especially the propeller.h library) can have a standard implementation across the various toolchains folks have developed, and will make adding future languages more straight forward hopefully. Thoughts on that effort?

Comments

  • This is great work Nikita, it's nice to see you've still been working on this project, and I would love to try it out. However last time I did install and attempt to build I recall that my older Mac OS X (10.10) had some issues with incompatible include files and I could not get the build to complete. If/when I get a new machine or can upgrade to a newer OS (I currently have things that will break when I do) I will certainly be giving it another try.

  • Unfortunately, I don't have a machine with 10.10 to help debug :#, otherwise I would. I'll also try building on my M1 Mac Mini and on Linux to make sure things still build across other OS's and architectures.

    I also just finished getting an ENC424J600 driver working with lwIP, making P2 fully network connected! That code is currently in a private repo I can't share, but I'll work on getting something packaged up and put in the examples folder eventually.

Sign In or Register to comment.