(todo: fluff/introduction, probably give a name to the language, also probably restructure everything)
As stated by muddyfish, a newer compiler was made to be more high-leveled than COGOL. So here I will show you some of the features of this language.
(todo probably send this to the end, after subroutines)
First up, this language has custom operators. A file containing some of the standard operators has been created called stdint.txt
. This can be included in a [language-name] program using #include stdint
. Now this list of operators do not jsut contain direct translations to opcodes (+
to __ADD__
) but also more complex ones such as operators for multiplication and modulo (both of which are not QFTASM opcodes). Additionally, one can use the opcodes directly by using __OPCODENAME__
.
Here is an example operator that performs the modulo operation. This uses a simple long division algorithm. Note that an operator would be unsafe
if the location of the local variables and the input being the same would interfere with the result.
(todo: probably use some simpler opearator)
unsafe operator (int a % int b) -> int
int res = a
int t = 0
int n = b
int br = 1
while(br != 0) do
if(b > res)
br = 0
t = res >> 1
n = b
while (n < t) do
n <<= 1
if(br != 0)
res -= n
return res
This language has both ints and bools, and arrays are yet to be implemented completely. Whatever the type, the only literals one may use are numbers.
int integerA = 5
declares an integer called integerA
with a value of 5.
bool booleanA = 1
declares a boolean called booleanA
with a truthy value.
This language uses Python-like indenting, meaning whitespace is important. They represent blocks and are used in control flow.
Every full program has a main
subroutine that acts just like the main()
function in C-like languages. From main
, variables can be declared, other subroutines can be called and if statements, while loops and for loops can be used.
(todo examples)
(todo subroutines)