I have always held a fondness for assembly language, from one of my earliest positions at a university where I developed IT courseware for the school of business and lectured on programming concepts including assembly language. Later I developed true optimizing assembly language compilers for an IT company and since then, amongst numerous other projects, a number of assembly simulators for many environments such as Delphi, Xojo and even the original REALbasic. ALE (Assembly Language Engine) for Xojo is my first attempt at providing a method to write assembly code directly in Xojo applications. ALE’s design draws on the many lessons I’ve learnt over years of writing compilers and simulators.
So why should you use ALE? Well, why not! ALE is not designed as a replacement for your Xojo code and never will be, in fact Xojo code will still be required in your application to provide GUI and disk based operations as ALE is completely sandboxed. ALE could certainly be used to replace some code in your application if you desire, or just for the enjoyment of trying a different language alongside Xojo, or as a learning tool to grasp the concepts of coding in one of computing’s earliest languages. I’ve found that developing an ALE program to provide the same result as a Xojo command to be quite rewarding and educational.
If I am to be completely truthful I really designed ALE to rekindle some of the warmth I felt back in the early days of computing, when memory was limited and if you wished to do anything serious you needed to code in assembly.
I position ALE as a tool which Xojo developers can use to write assembly language in their applications. It can be used just for fun, distributed in your compiled apps, or really as a learning tool to discover what Xojo and other languages must be doing underneath.
ALE was not designed, and never will be, a replacement for core Xojo code. It is merely a simulation of early X86 assembly instructions. ALE does not directly execute OS level assembly instructions, rather, for safety, instructions are emulated within a single threaded, single application, sandboxed engine. Although ALE’s performance is impressive, its entire engine was written in Xojo, so it will never outperform natively compiled Xojo code.
Regardless of how it’s received by its select and passionate userbase, I intend to continue development of ALE. Even with the recent release of ALE version 1.2, with its editor and integrated debugger, I still have numerous ideas for the future. Will ALE become truly multithreaded, as some desire, allowing you to execute multiple assembly language programs calling bare metal instructions on numerous threads simultaneously? Probably not as that was never its intent, but it’s certainly going to be fun moving forward.
Trig Charters has been a programmer for longer than she can recall, and a Xojo developer since before it was called Xojo. As well as being an author and developer of IT courseware, she creates one off apps for friends’ businesses. Her hobbies are assembly language and Manga, and she has recently completed a course on reading Japanese, so that she can really enjoy Manga as it was originally intended.