Hi, folks.
These last couple of months, we have been adding lots of content to the track. Some of these include:
New Concepts
We added 10 new concepts to the track, including:
Branchless Code: explores a couple of ways to handle conditionals without branching in x86-64.RecursionandThunks: they teach the building blocks of functional patterns in assembly.- Five different SIMD concepts, teaching the fundamentals of parallelism using SIMD instructions.
Atomics: how to write thread-safe code using built-in x86-64 instructions.NASM Macros: how to leverage assembler tools to reduce code duplication, improve readability, unroll loops and perform assembler-time computations.
We’ve made a design decision to focus on instructions up to the SSE4.2 extension. This is enough to teach fundamentals and ensures that even students running the exercises on older x86-64 CPUs, or on macOS, are able to finish the syllabus.
However, we’ve tried to add information, whenever possible, about newer extensions in the about.md of each concept.
Concepts reviewed, new information added
Many people probably don’t know this, but there are two different documents associated with a concept.
The information shown with a concept exercise is meant as an introduction, and additional material can be accessed when you click on the concept in the syllabus tree. You can tell you are seeing the “complete” version if the title starts with About.
In the x86-64 track, the about.md of many concepts has much more information than the introduction, including not only sections on newer extensions, as mentioned, but also links to complementary or reference material, performance considerations, more in-depth explanations, etc.
Even if you have already finished the concept, it might be worth checking the concept in the tree to review and see if there is anything new.
Debug Support
As mentioned on Debug support in the x86-64-assembly track, the track now has a file called debug.mac with many different macros which print the values stored in registers or memory, as well as whether a given flag is set. This file can be added to any exercise, whether concept or practice.
Other Changes
- Many practice exercises now have additional test cases, which check interesting edge cases or stress-test implementations.
- In some practice exercises, we explicitly align arrays or guarantee a buffer’s size to make it easier for students to explore SIMD approaches.