diff --git a/three files/README.md b/HW2_three files/README.md similarity index 100% rename from three files/README.md rename to HW2_three files/README.md diff --git a/three files/func.c b/HW2_three files/func.c similarity index 100% rename from three files/func.c rename to HW2_three files/func.c diff --git a/three files/func.h b/HW2_three files/func.h similarity index 100% rename from three files/func.h rename to HW2_three files/func.h diff --git a/three files/main.c b/HW2_three files/main.c similarity index 100% rename from three files/main.c rename to HW2_three files/main.c diff --git a/HW3/README.md b/HW3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8601047a10b8dfc4804d89d2a93a911682b26312 --- /dev/null +++ b/HW3/README.md @@ -0,0 +1,89 @@ +# Difference between Compiler and interpreter +-- compiler + -- 1. 프로그래밍 언어를 Runtime 이전에 기계어로 해석 + -- 2. 구동시에 코드와 함께 시스템으로부터 메모리를 할당받으며 할당받은 메모리 사용 + -- 3. Runtime 이전에 해석을 마치고 바로 기계어로 전환되기 때문에 OS 및 빌드 환경에 종속적 + -- 4. 종속적이므로 OS 환경에 맞게 호환되는 라이브러리와 빌드환경을 구분해서 구축 + +-- interpreter + -- 1. Runtime 이후에 Row단위로 해석하며 프로그램 구동 + -- 2. 프로그래밍 언어를 기계어로 바꾸지 않고 중간 단계를 거친 뒤, Runtime에 즉시 해석하기 때문에 compiler보다 낮은 퍼포먼스 + -- 3. Runtime에 실시간 debugging 및 코드 수정 가능 + -- 4. 메모리를 별도로 할당받아 수행되지 않고, 필요할 때 할당받아 사용 + + --출처: <https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90> + +# GCC + 1. 전처리 + -- #include, #define과 같은 전처리기 부분을 처리함, 필요한 헤더 파일을 삽입하고 실행 문장의 매크로를 상수로 변환 + 2. 컴파일 + -- 전처리된 파일로부터 어셈블리어루 된 파일 생성 + 3. 어셈블 + -- 기계어로 된 오브젝트 파일로 변환 + 4. 링크 + -- 라이브러리 함수와 오브젝트 파일을 연결하여 실행 파일을 생성 + +# GCC command +-- -E option: 전처리까지만 실행항 .i file 생성 + -- 사용법: gcc -E <filename>.c > <filename>.i +  + +-- -S option: 어셈블리까지 실행하여 .s file 생성 + -- 사용법: gcc -S <filename>.i +  + +-- -c option: 전처리, 컴파일, 어셈블 실행하지만 링크는 안함 -> .o file 생성 + -- 사용법: gcc -c <filename>.s +  + +-- -g option: 운영체제 고유의 형식으로 디버깅 정보를 만듦 + -- 사용법: gcc- -g <filename>.c +  + -- 디버깅 정보를 추가하여 컴파일 하였기 때문에 용량이 더 큼 + +-- -o <file> option: 출력파일의 이름을 지정할 수 있음 + -- 사용법: gcc -o <filename> 01.option-E.c +  + +-- -I<dir> option: C source가 표준 디렉토리가 아닌 위치에 있는 헤더 파일을 가질 때, 해당 디렉토리 위치 지정해줌 + -- 사용법: gcc <filename>.c -l<dir> +  + +-- -l<library name>: 표준 라이브러리가 아닌 라이브러리를 사용하고 싶을 때, 해당 라이브러리 지정해줌 + -- 사용법: gcc <filename>.c -l<libraryname> +  + +-- -L<dir> option: 사용자가 라이브러리를 직접 만들거나 새 라이브러리를 내려 받아 사용할 때, 해당 라이브러리 지정해줌 + -- 사용법: gcc -L<library directory> + +-- -D<macro> option: #define MACRO를 선언 해준다. + -- 사용법: gcc -D<정의할 MACRO 이름> +  + -- #define NO를 -DNO로 선언함으로써 오류없이 컴파일됨 + +-- -O<level> option: -O1, O2, O3의 세가지의 옵션이 존재하고 최소한의 스레드 분기 동작 횟수를 줄인다. 컴파일 시간은 증가하지만, 실행은 빨라짐 + -- 사용법: gcc -O2 <filename>.c + +-- -wall: gcc가 제공하는 모든 경고 메시지 출력 + -- 사용법: gcc -Wall <filename>.c +  + +-- -v option: 컴파일 과정과 version 출력 + -- 사용법: gcc -v <filename>.c +  + + + + + + + + + + + + + + + + diff --git a/HW3/image/1.PNG b/HW3/image/1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9b51d47651620d249729511a4659d6688ea45760 Binary files /dev/null and b/HW3/image/1.PNG differ diff --git a/HW3/image/10.PNG b/HW3/image/10.PNG new file mode 100644 index 0000000000000000000000000000000000000000..3ab2feaab11e002d2b927e09f10176bbd552070b Binary files /dev/null and b/HW3/image/10.PNG differ diff --git a/HW3/image/11.PNG b/HW3/image/11.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6f2d6c2e15e134655cce3674bcf1abacdd2971a7 Binary files /dev/null and b/HW3/image/11.PNG differ diff --git a/HW3/image/2.PNG b/HW3/image/2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e0312320a5c7fcbea1650bed5d8d6b0498159e67 Binary files /dev/null and b/HW3/image/2.PNG differ diff --git a/HW3/image/3.PNG b/HW3/image/3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d443f60d1c6fbc5e8a4a2bca248a366336c62584 Binary files /dev/null and b/HW3/image/3.PNG differ diff --git a/HW3/image/4.PNG b/HW3/image/4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..28fb49f0b56efd75924e77dd25d14bf37dcca43b Binary files /dev/null and b/HW3/image/4.PNG differ diff --git a/HW3/image/5.PNG b/HW3/image/5.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0ec11e5a6d645a1a726d8139b3892cc6c886830d Binary files /dev/null and b/HW3/image/5.PNG differ diff --git a/HW3/image/6.PNG b/HW3/image/6.PNG new file mode 100644 index 0000000000000000000000000000000000000000..72770e5cc168b869eb66c54cc14ecfb50bf56286 Binary files /dev/null and b/HW3/image/6.PNG differ diff --git a/HW3/image/7.png b/HW3/image/7.png new file mode 100644 index 0000000000000000000000000000000000000000..d143eb95c49700baca2bdefce323337520dc80e1 Binary files /dev/null and b/HW3/image/7.png differ diff --git a/HW3/image/8.PNG b/HW3/image/8.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e3ecd35583e65bf47b7101764f1fc39d045744f3 Binary files /dev/null and b/HW3/image/8.PNG differ diff --git a/HW3/image/9.PNG b/HW3/image/9.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2fb16e703516ec3a95c0bc48cb504fc4ea25f045 Binary files /dev/null and b/HW3/image/9.PNG differ