Article by Ayman Alheraki in March 10 2025 08:24 PM
I began my programming journey 39 years ago, and after a year, in 1987, I started learning assembly programming for Z80 processors. It was, of course, extremely difficult at first, and I only completed a few tasks with it, mainly transferring data from electronic chips storing programs to 1.44MB floppy disks.
I then moved on to high-level languages such as BASIC, C, Pascal, and database tools like DBase III+, FoxBase, and Clipper. Later, I met a physics professor proficient in x86 assembly, and I took a specialized course with him focused on adding Arabic language support to DOS systems. However, what discouraged me from continuing with assembly at that time was the lack of job opportunities, so I shifted my focus to high-level languages, especially with the emergence of Windows as the dominant operating system.
Every once in a while, I would revisit assembly, review it, work on it briefly, and develop small libraries to integrate with C++ to solve certain problems. Then, in 2016, I took courses and read specialized books multiple times, focusing on x64 Assembly for x86 Processors. After leaving my job three years ago, I had ample free time and started studying assembly in greater depth.
A few months ago, I decided to study and work with LLVM, a powerful toolset that greatly aids in understanding and designing compilers. LLVM, supported by the University of Illinois since its release in 2000, has been widely adopted by many companies, including the tech giant Apple, to develop their programming languages. Some of the most notable languages designed using LLVM include C, C++, Rust, Zig, and Swift, among many others. The platform has comprehensive documentation available on its official website, along with strong reference books. However, I wanted to dive deeper into its study and practical application.
Additionally, I wrote a comprehensive book on assembly programming using GAS (GNU Assembler) to complete my low-level programming series. Over the coming period, I plan to refine and professionally develop these books, making them leading resources in this field. I will enhance them by adding practical codes and experiments across all operating systems and processors, ensuring accessibility and ease of use with the most powerful development tools available.
I own multiple devices with various processors, including:
AMD Ryzen 7
Intel i7-12700H
Snapdragon X Elite
Apple Silicon M2
I also work with operating systems on x86 processors, as well as Windows and macOS on both ARM and x86 architectures.
I will conduct extensive testing and experimentation across these processors and systems to further advance my knowledge and contributions to the field. My ultimate goal is to both learn and teach this area through books that will be published with global publishers, along with articles documenting my findings and advancements in low-level programming.
I have been passionate about this field since I started programming in 1986. Although I have worked with most programming languages as they evolved and became necessary, I have always been deeply fascinated by low-level programming. Now that I have the time to focus on it, I am dedicating myself to mastering and sharing this knowledge.
If you share my enthusiasm for this field, follow me for continuous insights and valuable content. I always strive to provide useful knowledge for programmers and enthusiasts alike.