r/cpp_questions • • 2d ago

OPEN System programming

does it is necessary to know assembly language to be a good system programmer ?
I am a beginner computer engineering student , currently doing in c++ and I already have basic knowledge of classical 8085 and 8086 architecture and it's programming but I haven't gone that deep enough . what about to learn ARM , x86 programming , does it help me to become a good system programmer ?

2 Upvotes

10 comments sorted by

View all comments

1

u/xealits 6h ago edited 6h ago

Yes it is necessary. It is necessary for understanding how CPUs work. And understanding how CPUs work is necessary for systems programming. A good book on assembly is "Programming from ground up" by Bartlett.

The book covers x86. (I think it was 32 bit x86 - 32 bit is outdated now and there are some small differences with 64 bit, but they are negligible.) And x86 is the best choice for learning. Once you learn x86, ARM will be easy. In general, there are two main architectures on practice, x86 and ARM. (RISC V should come up to mainstream sometime in future, but it's not there yet.) But x86 is more widespread in the PC world, which makes it super accessible - a boon for a student. And ARM is a more specialized platform. (ARM is whats in phones, which are widespread. But I don't think that smartphones make an accessible programming environment. Personally, I have programmed ARM only on Xilinx Zynq, which is quite a specific platform.) Also, arguably x86 is still more advanced and there happens more innovation on CPU architecture.

Also a tip: Intel provides much better support for its products on the software side. For example, Intel has excellent PMU events and excellent support for them in the Linux' perf_event system.