리틀 컴퓨터 3
Little Computer 3이 기사는 대부분 또는 전체적으로 단일 출처에 의존하고 있습니다. : · · · (2013년 3월) |
Little Computer 3 또는 LC-3는 컴퓨터 교육용 프로그래밍 언어의 일종인 어셈블리 언어입니다.
이것은 비교적 단순한 명령어 세트를 특징으로 하지만, 적당히 복잡한 어셈블리 프로그램을 작성하는 데 사용할 수 있으며, C 컴파일러의 실행 가능한 타깃입니다.이 언어는 x86 어셈블리보다 덜 복잡하지만 더 복잡한 언어의 것과 유사한 많은 기능을 가지고 있습니다.이러한 기능들은 초기 교육에 유용하기 때문에 컴퓨터 공학 및 컴퓨터 공학 학생들에게 프로그래밍과 컴퓨터 아키텍처의 기초를 가르치는 데 가장 많이 사용됩니다.
LC-3는 오스틴에 있는 텍사스 대학의 예일 N. 패트와 Urbana-Champaign에 있는 일리노이 대학의 Sanjay J. 파텔에 의해 개발되었습니다.명령어 세트의 사양, LC-3의 전체적인 아키텍처 및 하드웨어 구현에 대한 자세한 내용은 교과서 [1]제2판에서 확인할 수 있습니다.LC-3와 패트 앤 파텔의 책에 기초한 강좌는 많은 컴퓨터 공학 및 컴퓨터 과학 학과에서 제공됩니다.
아키텍처 사양
LC-3에서는 레지스터에 16비트의 워드사이즈를 지정하고 2개의16 로케이션주소 공간을 가진 16비트 주소 지정 가능 메모리를 사용합니다.레지스터 파일에는 8개의 레지스터가 있으며 번호로 R0 ~ R7이라고 합니다.모든 레지스터는 레지스터 파일에 쓸 수 있는 명령어 중 하나에 의해 자유롭게 사용될 수 있다는 점에서 범용이지만, 일부 컨텍스트(C 코드에서 LC-3 어셈블리로 변환 등)에서는 레지스터 중 일부가 특수한 목적으로 사용됩니다.
명령어 폭은 16비트이며 4비트 opcode가 있습니다.명령어 세트에서는 16개의 opcode 중 15개의 명령어가 정의되지만 일부 명령어에는 여러 동작 모드가 있습니다.개별 명령의 실행은 제어 ROM 및 마이크로시퀀싱 유닛을 갖춘 상태 기계에 의해 규제된다.
이 아키텍처는 키보드와 모니터를 사용하여 입출력 조절을 지원합니다.이 지원은 메모리 매핑 I/O 추상화를 통해 제공됩니다.시뮬레이션에서 이들 레지스터는 직접 접근할 수 있으며 아키텍처 사양은 그 내용을 기술한다.TRAP 명령 및 기본 운영 체제를 사용하여 보다 높은 수준의 I/O를 지원합니다.operating system에서는, 키보드의 문자를 읽어 에코 하는 기능, 모니터에 개개의 문자를 인쇄하는 기능, 포장된 형식과 개봉되지 않은 형식의 문자열 전체를 인쇄하는 기능, 및 머신을 정지하는 기능이 있습니다.
LC-3의 모든 데이터는 2의 보완 표현으로 저장된다고 가정합니다. 부호 없는 산술은 별도로 지원되지 않습니다.I/O 디바이스는 ASCII 문자로 동작합니다.LC-3에서는 부동소수점 번호는 네이티브로 지원되지 않습니다.
Patt 및 Patel 텍스트에서 제시된 하드웨어 구현은 파이프라인 또는 최적화되어 있지 않지만 컴퓨터 아키텍처에서 보다 고도의 개념을 사용하여 신속하게 구현할 수 있습니다.
명령 집합
LC-3 명령어세트는 15종류의 명령을 구현하고 16종류의 opcode는 나중에 사용하기 위해 예약되어 있습니다.이 아키텍처는 로드 스토어 아키텍처입니다.메모리의 값을 레지스터 파일로 가져와야 조작할 수 있습니다.
사용 가능한 산술 명령에는 덧셈, 비트 단위 AND 및 비트 단위 NOT가 있으며, 이들 중 처음 2개는 레지스터와 부호 확장 즉시값을 모두 오퍼랜드로 사용할 수 있습니다.이러한 연산은 감산(값을 부정함) 및 비트 왼쪽 이동(값에 2를 곱하는 더하기 명령을 사용함)을 포함한 많은 기본 산술 연산을 구현하기에 충분합니다.또, NOT 와 AND 의 조합은 논리적으로 완전하기 때문에, LC-3 는 임의의 비트 단위의 논리 함수를 실장할 수도 있습니다.
메모리 액세스는 프로그램 카운터(PC) 또는 레지스터 파일의 레지스터의 현재 값에 근거해 주소를 계산해 실시할 수 있습니다.또, LC-3는 간접적인 부하와 격납을 제공해, 메모리내의 데이터를 격납하는 주소로서 데이터를 격납합니다.메모리 내의 값을 레지스터 파일로 가져와야 산술 또는 논리 연산의 일부로 사용할 수 있습니다.
LC-3에서는 조건부 및 무조건 제어 흐름지시가 모두 제공됩니다.조건부 분기는 레지스터 파일에 기록된 마지막 데이터 조각의 산술 부호(음수, 0 또는 양수)를 기반으로 합니다.무조건 브랜치는 레지스터 값 또는 PC 상대 오프셋에 의해 주어진 위치로 실행을 이동할 수 있습니다.프로그램 카운터의 값을 변경하기 전에 서브루틴을 호출하는 코드의 주소를 레지스터에 저장함으로써 3개의 명령(JSR, JSR 및 TRAP)이 서브루틴 호출 개념을 지원합니다.LC-3은 두 값의 직접 산술 비교를 지원하지 않습니다.2개의 레지스터 값의 차이를 계산하려면 1개의 레지스터 값의 부정한 등가성을 찾은 후 2번째 레지스터의 정값에 부정한 숫자를 더해야 한다.두 레지스터의 차이는 사용자가 사용할 수 있는 8개의 레지스터 중 하나에 저장됩니다.
LC-3 명령어 세트에는 전용 포트 매핑 I/O 명령이 남아 있지 않기 때문에 하드웨어 구현에서는 일반적으로 메모리 맵의 일부를 메모리 매핑 I/[2]O용으로 예약합니다.
프로그래밍 언어 지원
LC-3는 물리 칩에 실장되어 있지 않지만 Linux/Unix, Mac OS X 및 Windows 환경에서 시뮬레이션에 사용할 수 있습니다.시뮬레이션 도구에는 라벨을 사용한 컴퓨터 오프셋 계산 및 어셈블리 코드 블록에 상수, 문자열 및 빈 메모리 위치를 삽입할 수 있는 어셈블러가 포함됩니다.LC-3에서는 C 언어를 사용하는 규칙도 있습니다.샘플 어셈블러, 컴파일러 및 시뮬레이터는 McGraw-Hill에 [1]의해 제공됩니다.
C 및 LC-3
LC-3의 C 함수에 대한 호출 규약은 x86 ISA 등의 다른 시스템에 의해 구현된 규칙과 유사합니다.C 프로그램을 실행하는 경우 아키텍처는 콜스택 및 동적 메모리 할당을 위한 공간을 포함하는 메모리 모델을 유지합니다.이 모델에서는 프로세서의 8개의 범용 레지스터 중 4개가 특수한 역할을 담당합니다.R4는 글로벌 데이터를 로드 및 저장하기 위한 베이스 레지스터로 사용되며 R5는 콜 스택 상의 현재 함수 영역을 가리키기 위해 사용되며 R6은 스택 포인터로서 사용됩니다.또한 R7은 보통 함수 호출로부터의 리턴 주소 저장용으로 예약되어 있습니다.JSR, JSRR 및 TRAP 명령은 실행 중에 자동으로 반환 주소를 이 레지스터에 저장합니다.
이 모델에서 C 함수를 호출하면 함수의 파라미터가 스택 오른쪽에서 왼쪽으로 푸시됩니다.다음으로 호출되는 함수의 반환값, 반환되는 호출자 내의 명령어 주소 및 호출자 값 R5를 위한 공간이 스택 상에 작성된다.호출되는 함수의 로컬 변수는 선언된 순서대로 스택에 푸시됩니다.LC-3에는 네이티브 PUSH 명령과 POP 명령이 없기 때문에 스택을 구현하려면 추가 및 메모리 저장 명령을 별도로 사용해야 합니다.
LC-3b
LC-3b ISA에서는 다음과 같은 변경을 포함한 LC-3의 수정 버전에 대해 설명하고 있습니다.
- 머신의 워드 사이즈는 16비트로 유지되지만 메모리는 동일한 주소 공간에서 바이트 주소 지정이 가능합니다.
- LD 및 ST 명령(PC 상대 주소 지정을 사용하여 데이터를 로드 및 저장)이 제거되었습니다.
- LDI 및 STI 명령(간접 로드 및 저장)에서는 PC 상대 어드레싱 대신 레지스터 기반 어드레싱을 사용합니다.
- 메모리의 개별 바이트를 조작하기 위해 LDB와 STB라는2개의 명령어가 추가되었습니다.다른 명령어는 워드 전체에 대해 계속 동작합니다.
- 예약된 opcode는 양방향 임의 크기의 산술적 및 논리적 이동을 지원하는 SHF 명령으로 변환되었습니다.
이러한 변경에 의해 LC-3b의 하드웨어는 LC-3의 하드웨어보다 약간 복잡해집니다.예를 들어, LC-3b는 다양한 크기의 데이터를 적절히 로드 및 저장하기 위해 메모리 유닛에 시프터(LC-3에는 해당되지 않음)와 추가 로직을 필요로 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b Patt, Yale N.; Patel, Sanjay (2003). Introduction to Computing Systems: From Bits and Gates to C and Beyond. New York, NY: McGraw-Hill Higher Education. ISBN 0-07-246750-9. Retrieved 6 October 2010.
- ^ 위안장랴오, 왕영광."마이크로프로세서 랩용 FPGA 개발 보드에서의 LC-3 소프트 코어 사용." 2013. 페이지 612-613. "인텔리전트 테크놀로지 및 엔지니어링 시스템"