Lessons Learned from Low-Level Hardware Details

Many problems in software systems cannot be properly understood without a good understanding of the low-level details of the machines we work on, says George Neville-Neil in a recent “Kode Vicious” column for ACM Queue.

“The lessons I learned by interacting directly with the hardware—without even the cushion of C (a.k.a. assembly with for loops)—remain with me to this day and have allowed me to track down difficult bugs, as well as significant performance problems,” Neville-Neil states.

“What does it take to understand the nether regions of computer systems?” he asks. His advice is offered in three parts: “Start small. Start small. Start small.” 

For example:

  • Start at the small end of processor and computer hardware, such as an Atmel AVR chip (not a Raspberry Pi).
  • Read small programs, such as a beginning Arduino tutorial that blinks an LED.
  • Write small pieces of low-level code—small enough that you can hold the entire program in your head if possible.

Developing these skills, Neville-Neil says, will help you “optimize systems for power and performance, as well as understand the ramifications of low-level security attacks.”

Read the complete article at ACM Queue.

FOSSlife Newsetter