aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-08-17 02:57:08 +0200
committerdec05eba <dec05eba@protonmail.com>2020-07-25 14:36:46 +0200
commit81c5f8e750fcda6a2451fb54604130431434f88f (patch)
tree944fa06c781d57b1db90e9153080f411a1c34a55 /README.md
parent20662a1d203ffb9e05d6694347fd258115b41d0a (diff)
Implement more instructions, implement function parameters and arguments
Diffstat (limited to 'README.md')
-rw-r--r--README.md13
1 files changed, 12 insertions, 1 deletions
diff --git a/README.md b/README.md
index a96972f..ed64fd6 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@ Amalgam is not meant to be a replacement for any other language but rather a new
with gpu without writing an external gpu program (glsl/hlsl).
Files have to be in utf-8 format and can optionally have utf-8 BOM.
+## Important
+Amalgam is not ready to be used yet.
# Fast compilation
Every stage of the compiler is multithreaded and data copy is kept to a minimal, for example tokenization
is done without storing tokens in a list. Almost all allocation is done using an arena allocator that
@@ -21,7 +23,16 @@ This could be done checking if an AST expression is referenced before evaluating
that compiles everything even if not referenced, since another user of the program/library may use the functions that are not used in your program
and they might have compile-issues.\
Align machine code to word boundary for the start of functions. No need to pad with NOP, as functions return before the padding.\
-Use const to cleanup ANSI C style variable declarations, since const allows you to declare and assign variables on the same line.
+Use const to cleanup ANSI C style variable declarations, since const allows you to declare and assign variables on the same line.\
+Make the bytecode work with big endian. On a big endian machine, the bytecode should be converted to little endian
+to make work on little endian as little as possible, meaning it would be a small penality to use big endian.\
+Verify all members of an extern struct are extern as well. Verify all parameters are of extern types for extern functions.\
+Verify all code execution paths in a function return a value, if the function excepts return values.\
+Show compile error if the result of a function call is ignored.\
+Show compile error if function result type and assigned to variable have different types.
+## Urgent
+Simplify src/compiler.c, it's pretty complex with the thread work done right now. The thread work should be put in a
+thread dispatch file that only handles thread job dispatching.
# Documents
Documents are located under doc. The file doc/Documentation.md is generated from source files by running doc/doc_extract.py
but there is no need to run this script unless you are modifying documentation in the source.