728x90 CS59 [Chapter 2.7 컴퓨터 구조 및 설계] 프로그램 번역과 실행 컴파일러와 어셈블러,Linker와 Loader,동적 링크 라이브러리 본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson, 존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다. 프로그램 번역과 실행 과정 컴파일러 C언어 즉, High level language에서 컴파일러에 의해 어셈블리어 혹은 (요즘 대부분) 어셈블리 언어 프로그램으로 변환된다. 유의해야 할 점은 컴파일러는 같은 기능을 하지만 다양한 어셈블리어를 만들어낼 수 있다는 것을 기억해야 한다. ( 1:다 구조) 어셈블러 어셈블러의 주된 역할은 어셈플리 프로그램을 기계어로 번역하는 일이다. 어셈블러는 어셈블리 언어 프로그램을 목적 파일(object file)로 바꾼다. 목적 파일에는 기계어 명령어, 데이터, 명령어를 메모리에 적절히 배치하기 위해 필요한.. 2022. 7. 11. [Chapter 2.6 컴퓨터 구조 및 설계] 동기화와 동기화에 사용되는 하드웨어 명령어 본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson,존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다. 병렬성과 명령어 : 동기화 태스크가 서로 독립적일 때에는 병렬처리가 쉽지만, 태스크가 서로 자원을 공유하는 경우가 많다. 예를 들어, 두 프로세서가 같은 메모리구역을 공유하고 있을 때, P1 프로세서가 데이터를 읽어오고 P2 프로세서가 데이터를 쓴다고 가정하면, P1 프로세서와 P2 프로세서의 순서에 따라 결과 값이 달라질 것이다. 이렇게 결과값이 달라지는 현상을 바로 데이터 경쟁관계(data races)라고 한다. 이러한 데이터 경쟁관계를 극복하기 위해선 하드웨어의 도움이 필수적이다. 컴퓨팅에 있어서 동기화 매커니즘은 일반적으로는 사용자 .. 2022. 7. 10. [Chapter 2.5 컴퓨터 구조 및 설계] 메모리 구조와 레지스터 스필링, 함수 및 재귀함수의 컴파일 본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson,존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다. 프로시저 혹은 함수가 불리는 과정 프로시저 : 제공되는 인수에 따라서 특정 작업을 수행하는 서브루틴. 프로그래밍에서 함수와 같다고 보면 된다. 메인 루틴을 Caller(호출 프로그램) 프로시저를 Callee(피호출 프로그램)라고 정의하자. 프로그램이 프로시저를 실행할 때 다음과 같은 6가지 과정을 거친다. Caller는 Callee가 접근할 수 있는 곳에 인수를 넣는다. 보통 $a0 - $a3 레지스터를 사용한다.(argument) Caller는 Callee에 제어를 넘긴다. Callee가 필요로 하는 메모리 자원을 얻는다. Callee가 .. 2022. 7. 9. [Chapter 2.4 컴퓨터 구조 및 설계] MIPS 조건 명령어와 PC 주소 지정 방식 PC 레지스터 본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson,존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다. 조건 명령어(Conditional Operations) 프로그래밍할 때 if 문 같은 조건문을 사용할 때가 있다. 이는 MIPS 명령어로 다음과 같다. beq rs, rt, L1 # if (rs == rt) branch to instruction labeled L1; bne rs, rt, L1 # if (rs != rt) branch to instruction labeled L1; j L1 #unconditional jump to instruction labeled L1 beq bne의 두명령어를 조건부 분기(conditional branc.. 2022. 7. 8. 이전 1 ··· 10 11 12 13 14 15 다음 728x90