Blue monday

Back to work, but still found time for some updates.

Compiled a pre-pre-alpha version (win64 only) that can be downloaded from here, currently version 0.001. Lots of bugs, but nice to have a first version. Here are some updates:

RasLib bitmap graphics libraries. Draw lines in bitmap mode! Works for lines that are smaller than 75% of the screen, but still. Lines, man.

Some gfx speed utilities as a built-in function : (fast) clear bitmap screen etc

While writing these libraries (and swearing), I discovered that something as amiss. While I previously had optimized statements such as a:=a+1 -> inc a, I realized with horror that I had done no such thing for binary operations of the type “a:=a+b”. Binary operations regularly requires a temporary variable, especially in larger expressions (a:=(sin(b)*d + 5)*e), but most regular expressions actually seems to be of the type b:=b-c etc. Using temp variables here are horrendous.

However, as is common knowledge among young girls nowadays: “When developing a compiler, first make sure that it works, then optimize”. I’ve now implemented an optimized version for binary operations of the type a:=a\-b, which also includes arrays (a[i]:=a[i]  +c) etc. For most of my code, this optimized away between 1-3% of the complete code, but more importantly, these operations are very common in inner loops.

The final thing is the mess with integers. I’ve added some more functionality, and try to fix bugs whenever they show up. Which is often. For instance, I realized I had not yet implemented support for adding numbers larger than 255 to integers etc, but this should be fixed by now.

Finally, in the next version I’ve decided to drop the compulsory hash # prefix to all integer literals, and instead require memory addresses to have something like an ampersand &$2000.

Leave a Reply

Your email address will not be published. Required fields are marked *