Assembly Language is a gray memory from my university.

For a long time, I couldn’t figure out why there were all kinds of addressing in assembly language, and why it was called instant counting. It’s just a number, with such an odd name.

The homework assigned by the teacher is not complex, such as using assembly control motherboard speaker sound, on the screen output white blue words, green white words, red black words….. I have done very hard, if I remember correctly also often copy classmate Zhang’s homework.

So I have always been full of admiration and a little bit jealous awe for people who can program in assembly language, especially when I heard that Qiubojun wrote WPS in assembly language! Ken Thompson and Dennis Ritchie wrote the Unix operating system on a sink! Can only be a sigh, and the gap between people really big ah.

After graduation, I was fascinated by the operating system. When I went to see the source code of MINIX, I was shocked at the beginning. In the bootstrap stage, it turned out to be a complete assembly! At the same time regretting why the university did not learn well, I also specially bought a book of assembly “80X86 assembly language programming tutorial”, ready to pick up assembly.

Hard to review a period of time to understand a point, the operating system to use the assembly is actually closely related to the CPU, what real mode, protection mode, GDT, LDT, data, code section…… Without understanding these Intel CPU concepts, it is impossible to read the operating system boot process.

At that time, there was very little information available on the Web, unlike today’s information explosion, and I struggled in the world of Minix alone for a while and then gave up. I probably wasn’t cut out for system programming, so I moved on to application-layer programming.

Those early programmers in The United States were very happy. They moved forward with the development of computers and experienced the whole process from low-level programming to high-level programming. For example, Bill Gates and Paul Allen wrote Basic interpreters directly on Altair computers in assembly. Those programmers had a very thorough understanding of the hardware and the underlying layers.

Although I am a beginner to give up type, I can deeply appreciate the benefits of learning assembly: assembly and the lowest level of hardware to deal with (note the hardware), so learning assembly can have a thorough understanding of the operation mechanism of the computer:

What is a register

How does the program work in memory and CPU

How does the CPU access memory

Segment of program

How function calls are implemented at the machine level (understanding the basics of buffer overflow attacks)

Interrupt and its Handling

.

With these knowledge, must have a deep understanding of the Von Neumann computer.

This knowledge in turn forms the basis of the operating system, with which it is easy to understand the concepts of processes/threads, synchronization and mutex, and their implementation, as well as virtual memory, file systems, I/O, and so on.

It’s not that you have to learn assembly to understand an operating system, but you have to look at things in different depth. With assembly behind you, you can build a computer in your head with more detail, more implementation, concepts that are not vague, but clear and alive.

Operating system operating principles, programmers benefit from life knowledge. For example, back-end programming, without understanding OS processes, threads, page caches, file systems, I/O to talk about how to implement a high-concurrency, high-data site is a joke.

Or learning about the JVM, if you know assembly, looking at the JVM’s bytecode, looking at stack frames, and just switching from register-based computation to stack-based computation will feel very familiar.

Our computer knowledge is like a pyramid, with mathematics at the bottom, digital circuits on top, assembly on top, operating systems, networks, databases, high-level programming languages, frameworks and so on……

It is not possible for each of us to master every level of the golden Tower, but to master and understand the core concepts that make up the pyramid.

It’s not necessary to master assembly to program at the application level, but it gives us a much more thorough view of the virtual world we live in. Yes, assembly is a must if you want to become a Neo in the Matrix.

I sometimes wonder: If the world of programming didn’t have Java, Python, C++, Javascript, PHP, and just assembly, like Rod Johnson, DHH, Eric Gamma (JUnit, Eclipse), Gavin King (Father of Hibernate), the big guys in application layer programming, what does it look like to write in a sink? What are they going to create?

I think one thing is for sure: even with assembly, their programming skills would grind me to a pulp. The reason is very simple, a person who has mastered complex systems, his logical thinking ability must be very strong, assembly just let him change a tool.

What’s worse is that because software is so hard to write, only a bunch of great people are qualified to program and become programmers, and mediocre people like me are probably moving bricks.

So thanks to this era, there are so many languages that I can choose from, not be crushed by a bull, and make a living programming.

What you see is just the tip of the iceberg. For more wonderful articles, please move to “Code farmers turn over the article essence”.

Any tips you’d like to share? Welcome to contribute! My contact information: Wechat: Liuxinlehan QQ: 3340792577




There is no shortage of job opportunities for good people, only good opportunities for themselves. But they often don’t have the energy to sift through a sea of opportunities to find the best fit.

100Offer will strictly screen talents and enterprises on the platform, so that “the best talents” and “the best companies” meet.

Scan the QR code below to register 100Offer and talk about your expectations for your next job. Within a week, you’ll receive 5-10 great opportunities to meet your needs!


Did this article help you? Welcome to join the wechat group of back-end learning Group: