AIA4 is a drastic redesign of the AIA Lang. It reverts back to the simplicity of AIA 1. NOTE Development on AIA4 has ceised since we have joint forces with the JERAN FOUNDATION to work on SIA and the VERA Project, this decision was made by new manangement we decided to move away from our old projects. We sincerely hope that someone can find a use for this!
AIA4 goes back to more assembly like code found in AIA1. Source files are commonly stored as .aia or .aia4. Sometimes it is also stored as .asm, this is not recommended, since it is not a real assembler and could cause confusion. The following is an example of a program counting to 0 to 100.
@lnk_dat "counter.aiad"
log "This is an example program counting up to 100\n"
set $0 0x00 ; counter
set $1 0x01 ; incrementor
set $2 0x65 ; limit
:loop
log "I: "
log $0
log "\n"
add $0 $1 ; Add the values from addresses $0 and $1 together
cpr $1 $0 ; Copy the value of the accumulator to address $0
cmp $0 $2 ; Check the counter against the limit
jl _loop ; Jump back to the start of the loop if $0 is smaller than 0x65 (0x4d)
log "Reached 100!\n"
stop ; Stops the program, this is only reached if $0 exceeds 0x64
The AIA4 runtime has a built in Compiler. This Compiler does no code-optimization, rather it translates the source 1 to 1 into binary. This compiler is not finished as of right now.
The AIA4 runtime is easy to use. To execute a program simply execute the runtime jar.
This requires you to put atleast the -f <compiled file>
argument. There are also these
other arguments:
- -nis | Enable the Netowrk Instruction Set (Not Implemented)
- -ms | Set the amount of bytes usable as memory
- -v | Gives the current version
- -saveState | Save all data of the LangProcessor to a text file.
- -pje | Enables the printing of Java Exceptions in the LangProcessor
- -debug | Enables program debug mode
- -sl | Enables the SystemLogger
- Implement Network Instruction Set
- Finish STDIO Instruction Execution
- Fix Issue with Label Offset in Compiler
BSD 3-Clause License
Copyright (c) 2021, GansGruppe All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. -
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. -
Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- Alan Goose : Member of GansGruppe/Teiwaz
- Henry Portsmith : Member of GansGruppe/Teiwaz
- Andreas Hammer: Member of GansGruppe/Teiwaz
- Alan Goose
- Felix Eckert