# Symphony Stdlib This is a standard library for symphony. It is both intended as a practical toolkit to develop more complex software as well as a teaching resource. If you just want to use the standard library [[stdlib.asm]] is your main header, include it after your code. You'll also need to include globals.asm in the first line of your main assembly file. If you are using it as a learning resource have a look at the [teaching folder](teaching). If you are intersted in contributing have a look at [[CONTRIBUTING.md]] --- ## ABI ### Calling Convention | class | registers | | ----- | --------- | | n.a. | zr | | preserved | sp, r8 - r12 | | scratch | flags, r1 - r7 | | arguments | r1 - r5, r6 = stack args, r7 = stack res | | result | r1 = low word, r2 = high word | | return address | r13 | ### Stack grows downwards from top of memory arguments are passed in reverse order with the stack so: lowest address = 1st stack arg highest address = last stack arg ### Types #### String Strings are stored in memory as null terminated sequences of bytes encoding ascii characters. They should be passed by reference. #### Array Arrays are stored in memory with a reference to them being the tuple (pointer, length) stored in a register pair. Array elements may only have a size of 8/16/32 bits