Assembly
youngwiki
상위 문서: 컴퓨터 시스템
개요
C 프로그램을 작성하고 컴파일하면 해당 코드는 assembly code로 변환된다.(이렇게 변환된 코드는 나중에 machine code로 다시 변환된다.) Assembly는 컴퓨터가 이해할 수 있는 code의 형태이다. 즉, Assembly를 공부한다는 것은 컴퓨터가 내부적으로 어떻게 동작하는지를 공부한다는 것이다.
Inside Our Computer
CPU와 Main Memory는 프로그램을 구동하는 가장 핵심적인 두가지 요소이다. Assembly code는 이들의 실행을 직접적으로 제어한다.
CPU work
CPU는 다음과 같은 과정을 따라서 동작한다.
- CPU가 메모리로부터 machine instruction을 fetch한다.
- Program Counter(PC)는 해당 instruction을 fetch하기 위해서 사용되는 주소를 저장하는 register이다.
- 이때 메모리는 Code와 Data 모두를 저장하고 있다.
- fetch된 instruction이 CPU에게 무엇을 해야할지를 알려준다.
- 예를 들면 두 register를 더하거나, register로부터 메모리로 데이터를 옮기거나 하는 등의 행동이 있다.
- Assembly instruction은 machine instruction과 1대1로 대응되며, 사람이 해석하기 편하도록 가독성이 좋아진 버전이다.
- 해당 instruction의 execution 후에 PC는 자동적으로 next instruction에 대한 주소를 업데이트한다.
- 이때 jump와 같은 명령어는 PC가 특정한 address를 저장하도록 직접적으로 명령하기도 한다.
- 해당 작업을 수행한 수, CPU는 1부터 다시 작업을 반복한다.