K_blueprint

컴퓨터 구조 과제 본문

computer architecture

컴퓨터 구조 과제

GODAGO 2023. 9. 17. 16:30
728x90
반응형
  1. 구름 IDE로 리눅스 개발환경 만들기
  2. Sizeof 연산 타이핑해보기
  3. 오버플로 예제를 언더 플로로 바꿔서 해보기(CHAR_MIN의 값에서 -1 하기)
  4. 비트 연산 프로그램 바꿔보기(특정 위치의 비트를 끄는 함수 구현)
  5. C언어가 기계어가 되는 과정 직접 해보기

1. 구름 IDE로 리눅스 개발환경 만들기

- 먼저 구름 홈페이지에 접속하여 계정을 설정해준다.

구름 회원가입

- 그 후에 컨테이너 만들기를 통해 개발 환경을 구축한다.

나는 C언어로 환경을 만들었고 터미널을 실행하게 되면 아래와 같게 된다.

 

2. Sizeof 연산 타이핑해보기

-  먼저 각 자료형마다 몇 바이트의 값이 할당되어있는지를 확인하기 위해 아래의 소스코드를 작성한다.

(여기서 %zu는 자료형의 크기를 알 수 있는 형식지정자이다.)

 

- 이후에 실행을 하게되면 각 자료형들의 크기를 알 수 있다.

 

3.  오버플로 예제를 언더 플로로 바꿔서 해보기

-  먼저 CHAR 자료형의 최소값을 기준으로 -1 연산을 수행하는 소스코드를 만든다.

(<limits.h>헤더는 주석과 같이 정수형 자료형의 유효범위를 확인할 수 있는 헤더이다.)

 

- 실행 결과는 다음과 같다.

 

4. 비트 연산 프로그램 바꿔보기

- 특정 위치의 비트를 끄는 함수를 구현하기 위해 아래의 소스코드를 만든다.

 

-이후 0, 4, 8번째 비트들을 차례대로 꺼보았을 때 결과를 본다면 아래와 같다.

 

5. C언어가 기계어가 되는 과정 직접 해보기

- 해당 과정을 알아보기 위해 간단한 함수를 만들고 실행한다.

- 함수를 실행한 후에 "gcc -E 파일명.c -o 파일명.i" 명령어를 입력하고 실행하게되면 i의 확장자를 가진 파일이 생기게 된다. 

소스코드를 전퍼리 시키는 명령어이다.

- (필자의 경우 project.i의 파일(= 내부 모습)이 생긴다.)

- 다음으로 "gcc -S 파일명.i -o 파일명.s" 명령어를 입력한다.

전처리된 소스코드를 어셈블리어로 컴파일 하는 명령어이다.

- (필자의 경우 project.s의 파일(=내부 모습)이 생긴다.)

- 마지막으로  "gcc -C 파일명.s -o 파일명.o" 명령어를 입력한다.

어셈블리어 파일을 오브젝트 파일로 변환 시켜주는 명령어이다.

- (필자의 경우 project.o의 파일(=내부 모습)이 생긴다.)

기계어로 변환된 것을 확인할 수 있다.

 

728x90
반응형