Format Readme.
This commit is contained in:
parent
cdccd1ade9
commit
ef7c5750a4
63
README.md
63
README.md
@ -1,17 +1,13 @@
|
||||
# aebytecode
|
||||
=====
|
||||
|
||||
An library and stand alone assembler for aeternity bytecode.
|
||||
|
||||
This version supports Aevm bytecode and Fate bytecode.
|
||||
|
||||
## Build
|
||||
-----
|
||||
|
||||
$ make
|
||||
|
||||
## Fate Code
|
||||
---------
|
||||
|
||||
Fate code exists in 3 formats:
|
||||
|
||||
@ -29,58 +25,63 @@ The internal format is described in a separate document.
|
||||
The text representation is described below.
|
||||
|
||||
### Fate Assembler Code
|
||||
-------------------
|
||||
|
||||
Assembler code can be read from a file.
|
||||
The assembler has the following format:
|
||||
|
||||
Comments start with 2 semicolons and runs till end of line
|
||||
`;; This is a comment`
|
||||
Opcode mnemonics start with an upper case letter.
|
||||
`DUP`
|
||||
Identifiers start with a lower case letter
|
||||
`an_identifier`
|
||||
References to function arguments start with arg followed by an integer
|
||||
`arg0`
|
||||
References to variables/registers start with var followed by an integer
|
||||
`var0`
|
||||
References to stack postions is either a (for stack 0)
|
||||
or start with stack followed by an integer
|
||||
`stack1`
|
||||
`a`
|
||||
Comments start with 2 semicolons and runs till end of line
|
||||
`;; This is a comment`
|
||||
|
||||
Immediate values can be of 9 types:
|
||||
1a. Integers as decimals: {Digits} or -{Digits}
|
||||
Opcode mnemonics start with an upper case letter.
|
||||
`DUP`
|
||||
|
||||
Identifiers start with a lower case letter
|
||||
`an_identifier`
|
||||
|
||||
References to function arguments start with arg followed by an integer
|
||||
`arg0`
|
||||
|
||||
References to variables/registers start with var followed by an integer
|
||||
`var0`
|
||||
|
||||
References to stack postions is either a (for stack 0)
|
||||
or start with stack followed by an integer
|
||||
`stack1`
|
||||
`a`
|
||||
|
||||
Immediate values can be of 9 types:
|
||||
1a. Integers as decimals: {Digits} or -{Digits}
|
||||
`42`
|
||||
`-2374683271468723648732648736498712634876147`
|
||||
1b. Integers as Hexadecimals:: 0x{Hexdigits}
|
||||
1b. Integers as Hexadecimals:: 0x{Hexdigits}
|
||||
`0x0deadbeef0`
|
||||
2. addresses, a base58 encoded string starting with #{base58char}
|
||||
2. addresses, a base58 encoded string starting with #{base58char}
|
||||
followed by up to 64 hex chars
|
||||
`#nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv`
|
||||
3. Boolean true or false
|
||||
3. Boolean true or false
|
||||
`true`
|
||||
`false`
|
||||
4. Strings "{Characters}"
|
||||
4. Strings "{Characters}"
|
||||
`"Hello"`
|
||||
5. Map { Key => Value }
|
||||
5. Map { Key => Value }
|
||||
`{}`
|
||||
`{ 1 => { "foo" => true, "bar" => false}`
|
||||
6. Lists [ Elements ]
|
||||
6. Lists [ Elements ]
|
||||
`[]`
|
||||
`[1, 2]`
|
||||
7. Bit field < Bits > or !< Bits >
|
||||
7. Bit field < Bits > or !< Bits >
|
||||
`<000>`
|
||||
`<1010 1010>`
|
||||
`<>`
|
||||
`!<>`
|
||||
8. Tuples ( Elements )
|
||||
8. Tuples ( Elements )
|
||||
`()`
|
||||
`(1, "foo")`
|
||||
9. Varaiants: (| Size | Tag | ( Elements ) |)
|
||||
9. Varaiants: (| Size | Tag | ( Elements ) |)
|
||||
`(| 42 | 12 | ( "foo", 12) |)`
|
||||
|
||||
Where Digits: [0123456789]
|
||||
Where
|
||||
Digits: [0123456789]
|
||||
Hexdigits: [0123456789abcdef]
|
||||
base58char: [123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]
|
||||
Characters any printable ascii character 0..255 (except " no quoting yet)
|
||||
|
Loading…
x
Reference in New Issue
Block a user