Basm File Structure
Directives
A .basm input file is made of directives starting with the % character. Some directive starts a block that ends with the respective %end directive. Others are single line directives. The table below lists the directives that can be used in a .basm file.
Directive | End directive | Description |
---|---|---|
%section | %endsection | Code section |
%macro | %endmacro | Macro definition |
%fragment | %endfragment | Code fragment |
%chunk | %endchunk | Chunk of data |
%meta bmdef | none | BondMachine metadatas |
%meta cpdef | none | CP metadatas |
%meta sodef | none | SO metadatas |
%meta iodef | none | Input/Output metadatas |
%meta fidef | none | Fragment Instance metadata |
%meta filinkdef | none | Fragment Instance Link metadatas |
%meta soatt | none | SO attach directives |
%meta ioatt | none | IO attach directives |
%meta filinkatt | none | Fragment Instance link attach directives |
Sections
The main Basm structure is the section. A section is a block of code or data. The directive %section is used start a section and ends with the directive %endsection. The syntax is:
%section section_name section_type [section metadata]
...
%endsection
Within Basm four type of sections can be defined:
- romtext: Read only code section
- romdata: Read only data section
- ramtext: Code section
- ramdata: Data section
The section name is a valid identifier. It has to be unique in the current BasmInstance. The section type is one of the four listed above. The section metadata is a list of metadata that are associated to the section. The metadata are used to define the section properties. The list of metadata is given in the table below.
Metadata | Description |
---|---|
iomode | The defualt I/O mode for the section. It can be sync or async. The default is async. |
Code sections
Data sections
TODO
Macros
TODO
Fragments
TODO
Chunks
TODO
%meta Directives
The %meta directives are used to define the BondMachine architecture. They are used to define the SOs, the CPs and the BM itself. The syntax is: