SlideShare a Scribd company logo
컴퓨터의 명령어란
명령어
명령어(Instruction)의 정의
● 컴퓨터가 하드웨어에게 일을 시키기위한 수단
● 명령어는 위에서 아래로 흐르는 하향식 접근구조
● 다음 명령어를 가르키(저장하는)는 레지스터(Instruction Pointer)에 따라서 명령어를 실행함
Instruction Pointer
● 현재 실행되고 있는 프로그램의 실행코드가 저장된 메모리의 주소를 가르키는 상태 레지스터.
○ 현재 실행되는 명령어가 실행 될때, 다음 올 명령어의 주소 값이 저장되어 있어, 지금 실행되는 명령어의 실행이 끝나면,
Instruction Pointer 에 따라서 다음 올 명령어가 실행과정이 옮겨진다.
● 프로그램의 실행이 진행됨에 따라 자동으로 증가함.
● 프로그램의 실행 순서가 변경되는 제어문이 실행될 때 자동으로 변경됨.
● 직접 접근이 불가한 레지스터
○ 프로그램이 설계자의 의도 대로 작동하게 하기 위해서 임의 변경이 불가능 하다.
명령어 집합구조(Instruction Set Architecture)
● 프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어.
● 명령어 집합구조는 1대1 대응되는 어셈블리로 표현 가능함. 기계어를 어셈블리어로 번역이 가능함
● 명령어 집합구조에는 MIPS(32b), ARM, x86, RISC-V 등이 있음
명령어 집합구조(ISA) 설계
● 명령어 집합 구조는 작성된 프로그램과 그 프로그램을 수행할 컴퓨터 하드웨어 사이의 인터페이스에 대한 완전한 정의 혹은
명세
● 하드웨어 기술이나 컴퓨터의 구성, 플랫폼이 될 운영체제 등을 고려해야 하는 매우 어려운 작업
명령어 집합구조(ISA) 설계 세부 정의
● 연산의 종류: 처리연산, 제어연산, 입출력연산 등
● 데이터 형식 (Data Type): 데이터의 의미, 데이터 값 저장방식(정수, 실수, 논리) 등
● 명령어 형식 (Instruction Type): 명령어 구성부분을 나타내는 양식
● 피연산자를 위한 주소지정방식 (Addressing Mode): 피연산자의 위치를 명시하는 방법, 메모리 or 레지스터
명령어의 구조
● 명령어는 크게 두 부분, 실행코드(opcode)와 피연산자(operand) 부분으로 구성됨
산술연산
산술연상의 정의
● 산술 연산은 덧셈, 뺄셈, 곱셈, 나눗셈 사칙연산의 계산을 하는것
● 컴퓨터는 레지스터와 ALU를 통해 산술연산을 수행한다.
MIPS 산술명령어
● MIPS 산술연산자는 반드시 한종류의 연산만 지시
● MIPS 산술명령어는 항상 변수 세개를 갖는 형식
● 피연산자가 반드시 3개인 이유
1. 간단하게 설계(간단하지만 최적화된 명력어 실행구조) 하기 위해서, 규칙적인 것이 좋다.
● MIPS 산술 명령어를 통해 b,c,d,e의 합을 a에 넣는 경우
1. add a,b,c : b와 c 를 더해 a 에 저장
2. add a,a,d : a와 d 를 더해 a 에 저장
3. add a,a,e : a와 e 를 더해 a 에 저장
MIPS 레지스터
● 산술 논리 제어 등의 연산을 위하여, MIPS 명령어 구조에서 제공하는 레지스터
● 레지스터는 컴퓨터가 사용하는 변수라고 이해하면 편하다.
스택프레임
● 함수가 실행될때 마다 함수 자신만이 사용가능한 고유한 메모리 stack 영역이다.
● 함수의 스택프레임 시작점은 fp가 가르킨다.
● 함수의 종료시에 해제되고 리턴 주소로 복귀 한다.
add 가 실행되면 add의 스택 프레임이 생성된다.
int add(int a, int b){
return a+b;
}
int main(){
printf("%d",add(3,4));
printf("hello World!n");
return 0;
}

More Related Content

Similar to 10

Ch09
Ch09Ch09
Ch09
Hankyo
 
Cpu basic
Cpu basicCpu basic
Cpu basic
Dongho Yu
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
jaypi Ko
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
jaypi Ko
 
Mt
MtMt
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
jieun kim
 
MCU(nanheekim)
MCU(nanheekim)MCU(nanheekim)
MCU(nanheekim)
Nanhee Kim
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4
Jinkyoung Kim
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
Jinkyoung Kim
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
Ubuntu Korea Community
 
가상화된 코드를 분석해보자
가상화된 코드를 분석해보자가상화된 코드를 분석해보자
가상화된 코드를 분석해보자
dkswognsdi
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
GangSeok Lee
 
컴퓨터개론04
컴퓨터개론04컴퓨터개론04
컴퓨터개론04
Edward Hwang
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
Tae Young Lee
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
chcbaram
 

Similar to 10 (15)

Ch09
Ch09Ch09
Ch09
 
Cpu basic
Cpu basicCpu basic
Cpu basic
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
Mt
MtMt
Mt
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
MCU(nanheekim)
MCU(nanheekim)MCU(nanheekim)
MCU(nanheekim)
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
가상화된 코드를 분석해보자
가상화된 코드를 분석해보자가상화된 코드를 분석해보자
가상화된 코드를 분석해보자
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
 
컴퓨터개론04
컴퓨터개론04컴퓨터개론04
컴퓨터개론04
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 

More from usdrd90

9
99
1111
11111111
1111
usdrd90
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaa
usdrd90
 
1
11
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어
usdrd90
 
TCP/IP 4계층
TCP/IP 4계층TCP/IP 4계층
TCP/IP 4계층
usdrd90
 
20181014
2018101420181014
20181014
usdrd90
 

More from usdrd90 (7)

9
99
9
 
1111
11111111
1111
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaa
 
1
11
1
 
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어
 
TCP/IP 4계층
TCP/IP 4계층TCP/IP 4계층
TCP/IP 4계층
 
20181014
2018101420181014
20181014
 

10

  • 1. 컴퓨터의 명령어란 명령어 명령어(Instruction)의 정의 ● 컴퓨터가 하드웨어에게 일을 시키기위한 수단 ● 명령어는 위에서 아래로 흐르는 하향식 접근구조 ● 다음 명령어를 가르키(저장하는)는 레지스터(Instruction Pointer)에 따라서 명령어를 실행함 Instruction Pointer ● 현재 실행되고 있는 프로그램의 실행코드가 저장된 메모리의 주소를 가르키는 상태 레지스터. ○ 현재 실행되는 명령어가 실행 될때, 다음 올 명령어의 주소 값이 저장되어 있어, 지금 실행되는 명령어의 실행이 끝나면, Instruction Pointer 에 따라서 다음 올 명령어가 실행과정이 옮겨진다. ● 프로그램의 실행이 진행됨에 따라 자동으로 증가함. ● 프로그램의 실행 순서가 변경되는 제어문이 실행될 때 자동으로 변경됨. ● 직접 접근이 불가한 레지스터 ○ 프로그램이 설계자의 의도 대로 작동하게 하기 위해서 임의 변경이 불가능 하다.
  • 2. 명령어 집합구조(Instruction Set Architecture) ● 프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어. ● 명령어 집합구조는 1대1 대응되는 어셈블리로 표현 가능함. 기계어를 어셈블리어로 번역이 가능함 ● 명령어 집합구조에는 MIPS(32b), ARM, x86, RISC-V 등이 있음 명령어 집합구조(ISA) 설계 ● 명령어 집합 구조는 작성된 프로그램과 그 프로그램을 수행할 컴퓨터 하드웨어 사이의 인터페이스에 대한 완전한 정의 혹은 명세 ● 하드웨어 기술이나 컴퓨터의 구성, 플랫폼이 될 운영체제 등을 고려해야 하는 매우 어려운 작업 명령어 집합구조(ISA) 설계 세부 정의 ● 연산의 종류: 처리연산, 제어연산, 입출력연산 등 ● 데이터 형식 (Data Type): 데이터의 의미, 데이터 값 저장방식(정수, 실수, 논리) 등 ● 명령어 형식 (Instruction Type): 명령어 구성부분을 나타내는 양식 ● 피연산자를 위한 주소지정방식 (Addressing Mode): 피연산자의 위치를 명시하는 방법, 메모리 or 레지스터 명령어의 구조 ● 명령어는 크게 두 부분, 실행코드(opcode)와 피연산자(operand) 부분으로 구성됨
  • 3. 산술연산 산술연상의 정의 ● 산술 연산은 덧셈, 뺄셈, 곱셈, 나눗셈 사칙연산의 계산을 하는것 ● 컴퓨터는 레지스터와 ALU를 통해 산술연산을 수행한다. MIPS 산술명령어 ● MIPS 산술연산자는 반드시 한종류의 연산만 지시 ● MIPS 산술명령어는 항상 변수 세개를 갖는 형식 ● 피연산자가 반드시 3개인 이유 1. 간단하게 설계(간단하지만 최적화된 명력어 실행구조) 하기 위해서, 규칙적인 것이 좋다. ● MIPS 산술 명령어를 통해 b,c,d,e의 합을 a에 넣는 경우 1. add a,b,c : b와 c 를 더해 a 에 저장 2. add a,a,d : a와 d 를 더해 a 에 저장 3. add a,a,e : a와 e 를 더해 a 에 저장 MIPS 레지스터 ● 산술 논리 제어 등의 연산을 위하여, MIPS 명령어 구조에서 제공하는 레지스터 ● 레지스터는 컴퓨터가 사용하는 변수라고 이해하면 편하다.
  • 4. 스택프레임 ● 함수가 실행될때 마다 함수 자신만이 사용가능한 고유한 메모리 stack 영역이다. ● 함수의 스택프레임 시작점은 fp가 가르킨다. ● 함수의 종료시에 해제되고 리턴 주소로 복귀 한다. add 가 실행되면 add의 스택 프레임이 생성된다. int add(int a, int b){ return a+b; } int main(){ printf("%d",add(3,4)); printf("hello World!n"); return 0; }