banner

블로그

Jul 27, 2023

어셈블리 언어를 두려워하는 사람은 누구입니까?

이번 주에 [Al Williams]는 어셈블리 언어를 더 이상 배울 가치가 있는지, 그리고 언제 배울 가치가 있는지에 대한 훌륭한 생각의 글을 썼습니다. 댓글이 넘쳐났고, 이렇게 많은 사람들이 기본적으로 우리에게 동의한다는 사실에 놀랐습니다. 그렇습니다. 물론 Hackaday 군중이기는 하지만, 가장 원시적인 언어에 대한 사랑이 쏟아질 것이라고는 아직 예상하지 못했습니다.

그러나 어셈블리 언어는 실제로 하나의 언어가 아닙니다. 모든 칩은 고유한 방언을 사용합니다. 물론 유사점도 있습니다. 모든 CPU에는 추가 기능이 있습니다. 그렇죠? 그러나 단 하나의 추가 기능만 있는 CPU는 거의 없습니다. 작업 레지스터나 RAM에서 운반, 저장 및 읽기 기능이 있는 변형과 없는 변형이 있습니다. 그리고 직접적이든 간접적이든 메모리 액세스에 대해 이야기하기 시작하면 칩의 개별 아키텍처에는 다양한 어셈블리 언어가 필요합니다.

그러나 CPU가 수행하는 특정 방식은 엄격한 언어 관점에서 볼 때 호환되지 않을 수 있지만 그 과정에서 배우게 될 프로그래밍 관용어 측면에서는 훨씬 더 유사합니다. 견고한 알고리즘 세트를 배우는 것이 어떤 고급 언어를 사용하든 도움이 되는 것처럼, 원시 어셈블리 언어에서 루프 제작 및 간단한 메모리 구조 뒤에 있는 개념을 배우면 어떤 CPU를 선택하든 도움이 됩니다.

나는 소수의 CPU에 대한 어셈블리 언어만 작성했고 그다지 많지는 않았지만 마이크로 컨트롤러가 가장 친숙하다는 것을 알았습니다. 그러니 그 물에 발가락을 담그고 싶다면 AVR이나 MSP430을 선택하세요. 아니면 새로운 인기 제품인 RISC-V도 있을 수 있습니다. 대부분의 작업을 직접 수행해야 할 만큼 작은 지침 세트가 있다는 것을 알게 될 것입니다. 그리고 결국, 어셈블리 언어를 배우는 것의 핵심은 바로 실리콘처럼 생각하는 법을 배우는 것입니다. 풀어야 할 재미있는 퍼즐처럼 여긴다면 아마도 그 경험을 즐길 수도 있을 것입니다.

[Al]의 원래 질문은 언제 어셈블리 언어를 배워야 하는지였습니다: 고급 언어 이전 또는 이후. 99%의 독자들에게 나는 그 대답이 바로 지금이라고 말하고 싶습니다.

공유하다