신입 개발자 공부 과정

CS 컴퓨터 공학 지식 - 명령어 본문

컴퓨터 공학

CS 컴퓨터 공학 지식 - 명령어

Lewisjkim 2024. 1. 4. 17:17
  • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
    • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
    • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
    • 저급 언어
      • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
        • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
      • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
    • 고급 언어에서 저급 언어로 변환되는 대표적 방식
      • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
        • 컴파일 언어 = C/C++, Rust
      • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
        • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
    • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
      • 명령어 종류
        • Move - 데이터를 옮겨라
        • Store - 메모리를 저장해라
        • Load(Fetch) - 메모리에서 가져와라
        • Push - 스택 최상단에 데이터를 정장하라
        • Pop - 스택 최상단의 데이터를 가져와라
          • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
            • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
            • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
            • 저급 언어
              • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
                • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
              • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
            • 고급 언어에서 저급 언어로 변환되는 대표적 방식
              • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
                • 컴파일 언어 = C/C++, Rust
              • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
                • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
            • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
              • 명령어 종류
                • Move - 데이터를 옮겨라
                • Store - 메모리를 저장해라
                • Load(Fetch) - 메모리에서 가져와라
                • Push - 스택 최상단에 데이터를 정장하라
                • Pop - 스택 최상단의 데이터를 가져와라
                  • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
                    • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
                    • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
                    • 저급 언어
                      • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
                        • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
                      • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
                    • 고급 언어에서 저급 언어로 변환되는 대표적 방식
                      • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
                        • 컴파일 언어 = C/C++, Rust
                      • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
                        • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
                    • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
                      • 명령어 종류
                        • Move - 데이터를 옮겨라
                        • Store - 메모리를 저장해라
                        • Load(Fetch) - 메모리에서 가져와라
                        • Push - 스택 최상단에 데이터를 정장하라
                        • Pop - 스택 최상단의 데이터를 가져와라
                          • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
                            • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
                            • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
                            • 저급 언어
                              • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
                                • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
                              • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
                            • 고급 언어에서 저급 언어로 변환되는 대표적 방식
                              • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
                                • 컴파일 언어 = C/C++, Rust
                              • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
                                • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
                            • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
                              • 명령어 종류
                                • Move - 데이터를 옮겨라
                                • Store - 메모리를 저장해라
                                • Load(Fetch) - 메모리에서 가져와라
                                • Push - 스택 최상단에 데이터를 정장하라
                                • Pop - 스택 최상단의 데이터를 가져와라
                                  • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
                                    • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
                                    • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
                                    • 저급 언어
                                      • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
                                        • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
                                      • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
                                    • 고급 언어에서 저급 언어로 변환되는 대표적 방식
                                      • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
                                        • 컴파일 언어 = C/C++, Rust
                                      • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
                                        • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
                                    • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
                                      • 명령어 종류
                                        • Move - 데이터를 옮겨라
                                        • Store - 메모리를 저장해라
                                        • Load(Fetch) - 메모리에서 가져와라
                                        • Push - 스택 최상단에 데이터를 정장하라
                                        • Pop - 스택 최상단의 데이터를 가져와라
                                          • 명령어 - 컴퓨터를 동작시키는 실질적인 정보
                                            • 소스 코드 = 개발자가 이해하기 편한 언어 / 고급 언어
                                            • 명령어와 데이터 = 컴퓨터가 이해하기 편한 언어 / 저금 언어
                                            • 저급 언어
                                              • 기계어(machine code) = 컴퓨터가 직접 이해하는 언어
                                                • 16 진수를 2진수로 표현하면 컴퓨터가 이해하는 저수준의 언어가 된다
                                              • 어셈블리어(assembly language) = 사람이 좀 읽기 편하게 변화시킨 언어
                                            • 고급 언어에서 저급 언어로 변환되는 대표적 방식
                                              • 컴파일 = 소스 코드 전체가 컴파일러(프로그램 = gcc, clang, visual studio)에 의해 검사, 목적 코드(object code)로 변환
                                                • 컴파일 언어 = C/C++, Rust
                                              • 인터프리트 = 소스코드 한 줄씩 인터프리터(프로그램)에 의해 검사, 목적 코드로 변환
                                                • 한줄한줄씩 검사 하고 변환하는거라 컴파일 된 상태라면 컴파일이 빠르다
                                            • 명령어의 구조 - “무엇을 대상(오퍼랜드)으로 무엇을 수행(연산 코드)하라” 로 구성 되어있는데 연산코드의 종류는 CPU마다 다를 수 있다. 단, 공통적인 명령어는 다음과 같이 정해져 있다.
                                              • 명령어 종류
                                                • Move - 데이터를 옮겨라
                                                • Store - 메모리를 저장해라
                                                • Load(Fetch) - 메모리에서 가져와라
                                                • Push - 스택 최상단에 데이터를 정장하라
                                                • Pop - 스택 최상단의 데이터를 가져와라
                                          • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
                                  • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
                          • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
                  • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
          • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
  • 컴퓨터는 프로그래밍 언어를 곧장 이해하는 것이아니고 소스 코드는 실행되기 전에 명령어(+데이터)로 변환되어 실행된다 → 고급언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다
  • 명령어 - 주소지정
    • 데이터를 직접 명시하지 않고 위치를 명시하는 이유
      • 명령어의 길이가 한정되어있기 때문
    • 유효 주소 - 연산 코드에 사용할 데이터가 저장된 위치, 즉 연산의 대상이 되는 데이터가 저장된 위치
    • 주소 지정 - 유효 주소를 찾는 방법, CPU마다 차이가 있다
      • 즉시 주소 지정 - 오퍼랜드 필드에 직접 명시
      • 직접 주소 지정 - 오퍼랜드에 유효주소를 명시
      *CPU가 레지스터에 접근하는 것 보다 메모리에 접근하는 속도가 더 느리다.
      • 간접 주소 지정 - 오퍼랜드에 유효주소의 주소를 명시, 메모리 접근을 2번해서 느리다
      • 레지스터 주소 지정 - 오퍼랜드에 데이터를 저장한 레지스터를 직접 명시
      • 레지스터 간접 주소 지정 - 연산에 사용할 데이터를 메모리에 저장하고, 그 유효 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

'컴퓨터 공학' 카테고리의 다른 글

CS 컴퓨터 공학 지식 - CPU  (2) 2024.01.04
CS 컴퓨터 공학 지식 - 컴퓨터 구조  (1) 2024.01.04