익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Assembly 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Assembly
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[컴퓨터 시스템]] ==개요== C 프로그램을 작성하고 컴파일하면 해당 코드는 assembly code로 변환된다.(이렇게 변환된 코드는 나중에 machine code로 다시 변환된다.) Assembly는 컴퓨터가 이해할 수 있는 code의 형태이다. 즉, Assembly를 공부한다는 것은 컴퓨터가 내부적으로 어떻게 동작하는지를 공부한다는 것이다. ==Inside Our Computer== CPU와 Main Memory는 프로그램을 구동하는 가장 핵심적인 두가지 요소이다. Assembly code는 이들의 실행을 직접적으로 제어한다. ===CPU work=== CPU는 다음과 같은 과정을 따라서 동작한다. [[파일:HowCPUWorks.png|테두리|프레임없음|450x450픽셀]] # 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부터 다시 작업을 반복한다. ===Architecture=== ISA와 microarchitecture라는 두가지 의미를 가진다. * Instruction set architecture(ISA): CPU design이 반드시 따라야 하는 abstract한 구체화 ** assembly code를 분석하거나 쓰기 위해서는 CPU의 특정 부분의 design을 반드시 알아야 한다.<ref>예를 들어 어떤 종류의 연산이 CPU에 의해 지원되는지, CPU에 반드시 존재하는 register의 이름들 등...</ref> ** IA32, x86-64가 ISA의 대표적인 예시들 중 하나이다. * Microarchitecture: hardware 수준에서 ISA가 어떤 방식으로 구현되는지에 대한 구체적인 방법을 의미한다. 하지만 현재 문서에는 주로 ISA의 의미를 가지는 architecture에 대해서 설명을 할것이다. ==각주== [[분류:컴퓨터 시스템]]
Assembly
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록