Compare commits
4
Commits
memory-map
...
daf4168129
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
daf4168129 | ||
|
|
4bce47209a | ||
|
|
af5a750031 | ||
|
|
8e0fdf0d28 |
@@ -1,3 +1,38 @@
|
|||||||
# symphony_stdlib
|
# 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.
|
||||||
|
|
||||||
standard library for symphony
|
|
||||||
Reference in New Issue
Block a user