Learn an assembly language. Your platform of choice.
One way to do this is by writing small C programs and looking at the assembler a compiler generates e.g. by calling gcc with -S. (You can also use this to get some understanding of the optimisations a compiler performs by comparing the difference between the assembler with optimisations and the assembler with full optimisations.)
As you do this, you should also start replacing bits of the C code with inline assembler that you have written yourself, since writing code is better than just reading code.
(Also, the DPCU16 from the yet-to-be-released game 0x10^c might be a reasonable way to learn the basics of assembly languages: there are even numerous online emulators, e.g. 0x10co.de)
One way to do this is by writing small C programs and looking at the assembler a compiler generates e.g. by calling
gcc
with-S
. (You can also use this to get some understanding of the optimisations a compiler performs by comparing the difference between the assembler with optimisations and the assembler with full optimisations.)As you do this, you should also start replacing bits of the C code with inline assembler that you have written yourself, since writing code is better than just reading code.
(Also, the DPCU16 from the yet-to-be-released game 0x10^c might be a reasonable way to learn the basics of assembly languages: there are even numerous online emulators, e.g. 0x10co.de)