이제부터 ARM 프로세서에 대한 이야기를 조금 더 해보려고 합니다.
제 개발 인생을 돌이켜 보니 대부분의 시간을 사실 ARM 프로세서와 함께 보냈더군요. 
다음과 같은 조합으로 말이죠.
 
   * 'ARM + RTOS, ARM + 리눅스'
 
ARM 프로세서를 처음 접할 때의 느낌
 
그런데 제가 ARM 프로세서를 처음 접할 때의 느낌을 잊을 수가 없습니다. 그 느낌이 어땠나면;
 
   * 목욕탕에서 가장 뜨거운 온탕에 점프해 들어갔을 때
 
음, 잘 공감이 가시나요? 대중 목욕탕에 안 가신다고요? 그럼 다음의 예는 어떤가요?
 
   * 그럼 충치가 있어서 치과를 가서 진료실에서 기다릴 때
 
아직도 공감이 안된다고요? 난 한번도 치과에 가본 적이 없다고요? 그렇다면 어쩔 수 없죠. 더 이상의 예를 들기는 어렵겠군요.
 
ARM 프로세서를 배우기 꺼려하는 이유
 
이처럼 ARM 프로세서를 처음 접하는 분들은 정말 ARM 프로세서를 배우기 싫거든요. 물론 저도 그랬죠.
여러분, 치아에 이상이 있으면 바로 치과에 가시나요? 아니죠. 조금 아파도 버티다가 나중에 너무 아파서 버틸 수 없을 때 치과에 가죠.
 
   * ARM 프로세서도 마찬가지에요.
 
안 배우려고 하다가 어쩔 수 없이 배울 수 밖에 없는 게 ARM 프로세서인 것 같아요. 어쩔 수 밖에 배워야 한다는 사실은 임베디드로 밥을 먹고 살려면 ARM 프로세서는 반드시 잘 알아야 한다고 이야기할 수도 있겠네요. 
 
그런데 치아가 안 좋은 데 버티다가 치과에 가면 어떤 결과를 맞이하나요? 대부분 치료비가 더 들거나 치아 상태가 더 안 좋아지는 경우가 많죠.
ARM 프로세서도 마찬가지에요. ARM 프로세서를 배우기 싫어서 버티다가 나중에 ARM 프로세서를 어쩔 수 없이 배우면 더 고생하는 경우가 많아요.
그래서 ARM 프로세서를 미리 배워 놓는게 중요하죠.
 
그렇다면 ARM 프로세서를 배우기 어려운 이유가 무엇일까요?  제 생각에는 ARM 프로세서의 내용이 어렵다기 보단 ARM 프로세서를 공부하는 방법에 문제가 있는 경우가 많아요. 그래서 전 언제나 ARM 프로세서의 공부 방법에 대해 고민을 한답니다. 유튜브에 가면 유명한 스타 입시 강사분들이 있죠. 많은 분들이 공부하는 방법이 중요하다고 강조합니다. ARM 프로세서도 마찬가지인 것 같아요.
 
ARM 프로세서의 이론과 내용을 단순히 이해하고 암기하는 방식으로 공부하면 그것은 '망하는 지름길'이랍니다. 그럼 ARM 프로세서를 처음 접하면 만나는 걸림돌인 어셈블리 명령어에 대해 조금 더 설명을 드려 볼게요.
 
ARM 어셈블리 명령어를 배우기 어려운 이유
 
ARM 프로세서를 공부하면 가장 먼저 만나는 주인공은 어셈블리 명령어입니다. 대부분 ARM 어셈블리 명령어를 배우기 싫어합니다. 그 이유는;
 
   * ARM 어셈블리 명령어는 배우기 어렵다.
 
라고 생각하기 때문인데요. 그런데 사실은 ARM 어셈블리 명령어는 C 언어 문법보다 쉬워요. 이건 제가 장담합니다. 
여기서 한 가지 의문이 생깁니다.
 
   * 그렇다면 ARM 어셈블리 명령어가 왜 어렵다고 느꼈을까?
 
음, 사실 ARM 어셈블리 명령어가 어려운 게 아니고요. ARM 어셈블리를 공부하는 방법이 잘못 됐기 때문이에요.
여러분, 수학 공부를 할 때 공식을 맨날 외우고 잊어 먹고 외우고 잊어 먹고 하면 수학 공부가 재미있나요? 물론 아니겠죠. 그 원리를 제대로 이해한 다음에 자연히 공식을 체득하면 더 재미있게 수학을 공부할 수 있어요.
 
그런데 ARM 어셈블리 명령어를 공부하는 패턴을 보면 ARM 어셈블리 명령어를 외우는 방식을 고집하는 것 같아요. 물론 저도 그랬죠.
 
   * 그런데 ARM 어셈블리 명령어를 외우는 방식으로 공부하는 것은 망하는 지름길이에요.
 
많은 분들은 ARM 어셈블리 명령어를 50개 정도를 무리해서 외웁니다. 영어를 공부할 때 단어를 외우 듯이 말이죠.
여러분, 이 방법으로 절대 공부하지 말기 바래요. 아무리 잘 외웠다고 느껴도 그것은 스스로 착각일 뿐이죠.
그 이유는;
 
   * ARM 어셈블리 명령어를 외우면 반드시 잊어 먹어요.
 
어짜피 잊어 먹고 개발에 써 먹지도 못할 껀데 ARM 어셈블리 명령어를 왜 외우나요? 그 시간에 게임을 하거나 유뷰트를 보시길 바래요.
 
수년동안 ARM 프로세서와 함께 보낸 제가 뼈져리게 느낀 점은 다음과 같아요. 
 
   * ARM 프로세서의 내용보다 ARM 프로세서를 공부하는 방법이 훨씬 더 중요하다.
  
이를 조금 다르게 말씀드려 볼까요?
 
   * ARM 어셈블리 명령어의 내용보다 ARM 어셈블리 명령어를 배우는 방법이 훨씬 더 중요하다.
 
이제 ARM 어셈블리 명령어를 잘 배우는 방법을 소개하려고 합니다.
 
ARM 어셈블리 명령어를 배울 때 다음과 같은 원칙을 세울 필요가 있어요.
 
   * ARM 프로세서의 작동 원리와 함께 어셈블리 명령어를 익힌다.
   * ARM 어셈블리 명령어는 반드시 디버깅을 하면서 몸소 체험한다.
   * ARM 어셈블리 명령어는 C 언어와 함께 배운다.
 
이 원칙과 함께 ARM 어셈블리 명령어를 배우면 더 빨리 배울 수 있고 훨씬 더 오랫동안 기억할 수 있어요.
이제부터 세부 원칙을 소개하려고 해요.
 

< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>

 
 

+ Recent posts