Where is Assembly language used to program hardware

assemblyembeddedhardware-programming

I've looked around for a good place to start learning embedded systems design/programming, and while all suggest beginner devices such as Arduino and RaspberryPi, I've never seen any suggestions for programming at the assembly level. I've recently completed my computer science bachelor's, but I've been getting more and more attracted to hardware rather than software programming. I've taken one hardware design course and we did assembly programming for 68k and logic design in Logism. I have a Raspberry Pi, and have messed with it some, but the languages used for these devices are still higher level (C, C++, Python).

So I have a few questions since I'm really interested in lower level design for chips/computer hardware:

What are the applications of Assembly language in today's hardware design? Is it still widely used or is most of it abstracted by higher level languages?

If it is still widely used, what type of jobs involve Assembly programming? What are the most popular platforms for assembly programming (68k, x86, etc.)?

Finally, what are some resources for modern-day Assembly programming, if the above applies?

Thanks, and again I've looked at some of the other questions about diving into embedded systems, so I hope my questions are sufficiently different, but feel free to flag this if my questions were already answered!

Best Answer

What are the applications of Assembly language in today's hardware design? Is it still widely used or is most of it abstracted by higher level languages?

Assembly language is used in specific use cases. It is still the most common in specific use cases in embedded systems software however it is still present in other low level projects like Linux kernel. It is used here and there because there are certain things then can be done only in assembly and because assembly results in a faster and smaller code. I will give you one real life example to make it more clear to you. Some critical parts of firmware for smart cards is written in assembly in order to protect software execution against different types of attacks and assembly is the only language where you fully control binary representation of the program. Compiler might leave security hole in the firmware which might be an entry point for the attacker.

If it is still widely used, what type of jobs involve Assembly programming?

Here you have few example engineering positions requiring advanced assembly language knowledge:

  • Compiler Engineer.
  • Firmware Engineer.
  • Secure Firmware Engineer.
  • Malware Analyst.

What are the most popular platforms for assembly programming (68k, x86, etc.)?

Check the most popular CPU architectures in these times and you will have the answer (spoiler Intel x86/x64, ARM).

Finally, what are some resources for modern-day Assembly programming, if the above applies?

Google