본문 바로가기

IT개발/컴퓨터구조

(6)
컴퓨터 구조에 대한 설명(3-2) / 함수호출 인자의 전달과 PUSH & POP 명령어 디자인 # 함수호출 인자의 전달과 PUSH & POP 명령어 디자인 어셈블리 언어라고 해서, 레지스터들을 일일이 직접 컨트롤 해야만 하는 것은 아니다. 잘 정의된 명령어를 제공하므로써, 레지스터를 직접 컨트롤하는 수고를 덜어주는 경우도 있다. 우리는 추가적인 명령어 2가지를 더 정의하고자 한다. (스택에 관련된 연산을 보다 용이하게 하기 위하여) 참고> 함수 호출 / 프로시저 호출 의 구분 1) 함수호출 - 입력에 대한 출력이 반환값으로 존재하는 경우 2) 프로시저 호출 - 출력에 해당하는 반환값 없이 모듈화해 놓은 서브 루틴(Sub-Routine)의 실행을 위한 호출 우리가 초점을 맞출 질문들 -------------------------------------------------------------- " ..
컴퓨터 구조에 대한 설명(3-1) 절차적 함수 호출(Procedure Call)지원 CPU모델 자, 지난 주에 배운 내용으로 CPU의 연산방식에 대한 궁금증은 어느정도 해소되었을 것이다. 하지만 이것을 우리가 구현한 응용프로그램과 연결시켜 생각하기에는 좀 부족한 감이 있다. 왜냐하면, C, C++같은 언어는 함수의 연속된 호출을 통해서 프로그램 흐름을 형성하기 때문이다. => 따라서, 함수호출이 어떻게 이루어지는지 그 과정을 이해해야만 함수호출과 더불어 CPU 연산방식을 보다 깊게 이해할 수 있다. 목표 : 함수가 호출되는 원리와 호출이 될 때마다 할당되는 메모리 관리방식에 대한 이해 # 절차적 함수 호출(Procedure Call)지원 CPU모델 우리가 쉽게 생각하는 함수호출도 CPU의 도움을 받아야만 가능함. (함수 호출이라는 기능은 하드웨어 종속적인 부분이 상당수 존재함) - 스택 프레임(S..
컴퓨터 구조에 대한 설명(2-3) / Direct모드 와 InDirect모드 자, 이제 Direct와 InDirect 모드에 대해 알아보자. ^^ ※ Direct모드 와 InDirect모드 지금까지 우리는 명령어를 디자인하면서 많은 것을 이루었다. 16비트로 디자인된 명령어에 참으로 많은 정보들을 담도록 디자인했으니 말이다. 하지만 한 가지 문제점이 있다. 이 문제점에 대해, 그리고 이 문제를 해결하기 위한 접근방법에 관심을 두길 바란다. ^^ 다시 한번 말하지만 지금 여기서 언급되는 문제점은 실제 cpu에서도 유사하게 존재하는 것들이다. - Direct모드의 문제점과 InDirect모드의 제안 하나의 명령어에 여러정보를 담다보니, 우리는 표현가능한 데이터 크기에 제한이 따른다는 것을 알게 되었다. 예를 들어보자. LOAD명령어는 세개의 비트수로 표현되는 destination(8..
컴퓨터 구조에 대한 설명(2-2) / LOAD & STORE 명령어 디자인 자, 오늘은 LOAD&STORE 명령어를 디자인하고, Direct와 InDirect 모드에 대해 알아보자. ^^ ※ LOAD & STORE 명령어 디자인 우리는 어제 사칙연산과 관련된 명령어를 다자인하면서 명령어 포맷에 대한 이해에 포커스를 맞췄다. 이번에는 메인 메모리로부터 데이터를 읽어 오거나(LOAD) 저장(STORE)하는 기능과 관련된 명령어를 디자인하면서 레지스터의 필요성에 포커스를 맞추려 한다. - LOAD & STORE 명령어의 필요성 앞서 명령어를 디자인하는 과정에서 "(사칙)연산의 결과를 레지스터에만 저장할 수 있도록 하겠다." 라는 제약사항을 두었다. = 모든 피연산자에서 메인메모리의 주소값이 올수 없다는 제약과 동일한 의미다. 때문에 다음과 같은 연산은 할 수가 없다. int a = ..
컴퓨터 구조에 대한 설명(2-1) 목표 : 컴퓨터 구조 전문가가 되어 컴퓨터를 구성하는 요소를 하나씩 디자인 지금 시간은 10시.. 오늘은 시스템 프로그래머 입장에서 좀 더 컴퓨터 구조에 대해 근본적인 이해를 해보려 한다. 즉, 잠시 컴퓨터 구조 전문가가 되어 컴퓨터를 구성하는 요소를 하나씩 디자인해 나가는 것이다. 좀 더 구체적으로 무엇을 디자인 할꺼냐고? 물론 CPU다. 우리는 1장을 통해 CPU를 구성하는 기본요소는 다음과 같음을 알 수 있었다. - ALU - 컨트롤 유닛 - 레지스터 우리는 이중에서 레지스터에 초점을 맞추려 한다. 그 이유는 시스템 프로그래머 입장에서 CPU를 보는 관점의 대부분이 레지스터에 집중되기 때문이다. ※ 레지스터 디자인 레지스터를 디자인하는데 있어 결정해야 하는 중요한 사항은 다음과 같다. ( 우리가 결..
컴퓨터 구조관련 정리(1) 목표> 프로그래머 관점에서 머리속에 컴퓨터의 전체적인 그림을 그리자. 시스템 프로그래밍에 대한 (폭넓은) 정의 : 시스템 프로그램 - 컴퓨터 시스템을 동작시키는 프로그램 (동작 - 파일복사나 파일이동 등과 같이 우리가 상식적으로 생각할때 기본적인 동작이라 간주하는 것들) 그럼 대표적인 시스템 프로그램은? - Windows, Unix 와 같은 운영체제 = 하드웨어를 모르는 사용자들이 컴퓨터 쉽게 사용할 수 있도록 도와줌 컴퓨터 시스템 - 보통 하드웨어 뿐만 아니라 + 하드웨어가 실제 일을 하게끔 도와주는 운영체제를 포함 시스템 프로그래머 ? 1) 어셈블리. c언어 이용하여 하드웨어 직접컨트롤 하는 개발자 2) 운영체제 개발자 3) Windows 나 Unix 같은 운영체제에서 제공하는 라이브러리(운영체제의 ..