728x90
반응형

https://youtu.be/lkRyKlJrqEk



1. 어셈블리 이해하기

1-1. 어셈블리 소개 및 어슈머 언어 설명
-  운영체제와 OS의 목적 등 배움의 중요성을 알려줌
-  컴퓨터의 성능 향상을 위해 오케이 포워먼, 어널 시스템 등의 개발에 큰 영향 미침
-  어슈머 언어, 트랜슬레이팅, 적재기 등의 소프트웨어 작동을 설명함
-  어탁빌링 랭귤(어셈블러)에 대해 소개함
- (중요) 어탁빌링 랭귤은 어셈블러 프로그램이 기계와 호환되지 않는다는 점을 알려줌

1-2. 어셈블리 특징 및 어셈블리 랭귤의 세부 내용
-  어셈블리(어협+)는 기계와 호환되지 않음을 강조함
-  어셈블리 랭귤의 3가지 주요 명령어(머신 명령어, 어셈블리 명령어, 마크로 명령어)를 소개함
- (중요) 각각의 명령어들이 하나의 프로그램을 이루는 기본적인 요소라고 강조함
-  어슨브링 언어 이해에 필요한 기타 주제들과 강좌 진도를 계획함

1-3. 어셈블리 관련 약점 및 특장점
- (중요) 어즌블리 프로그램은 여전히 고등학교 수준의 프로그래밍으로 설명함
-  현재는 그 위와 같이 학습되지 않지만 추후 많이 배울 예정임
-  어셈블리에서는 디버깅보다 실무에 더욱 초점을 맞춤
-  이를 통해 실제 현장을 어떻게 이해해야 하는지의 가이드를 제공함
- (중요) 어셈블리에서 시험 준비를 위한 이러한 접근법을 제시함

2. 컴퓨터 프로그래밍 언어의 이해 및 활용

2-1. 프로그래밍 언어의 중요성과 종류 소개
- (중요) 프로그래밍 언어의 기본적인 개념과 종류를 설명함
-  다양한 프로그래밍 언어(아저 언어, 비주얼 언어 등)의 존재를 소개함
-  각 언어별 특성과 사용 상황에 대해 설명함
-  동양/서양 언어 차이점과 관련성을 논하며, 원활한 소통 강조함
-  어셈블리라는 특정 프로그래밍 언어의 특성과 작동 방식을 개략적으로 설명함

2-2. 어셈블리 언어의 특징과 작동 방식
- (중요) 어셈블리라는 프로그래밍 언어의 작동 흐름과 매커니즘을 설명함
-  '10과 20' 예제를 통해 어셈블리 언어의 작동 과정을 이해하도록 유도함
-  조건문 형식과 무조건문 형식을 통한 어셈블리 명령어의 표현 방법을 실습 예제로 제공함
-  어셈블리의 재구성 가능성과 그것을 이용한 소스 코드 작성 방법을 살펴봄

2-3. 고급 언어와 어셈블리의 관계 분석
- (중요) 고급 언어의 개념과 이를 바탕으로 한 어셈블리의 특성을 분석함
-  복잡한 프로그래밍 작업을 수행하기 위해선 초기에 어셈블리로 작성되며 이후 고급 언어로 전환되는 이유를 설명함
-  고급 언어에서는 먼저 전체 작업을 수행한 후, 그 결과를 어셈블리로 반환 받는 특성을 강조함
-  앞으로 진행될 강좌 내용에 대한 기대감을 표시하며 강의를 마무리함

3. 투패스 어셈블리

3-1. 어셈블리의 정의 및 중요성
-  어셈블리는 1번 번역 후 2번 단계로 목적 프로그램 만들어냄
- (중요) 1번 번역에서 소스 프로그램의 사본(화살표) 생성함
-  한 개 이상의 명령어 있을 경우 해당 명령어 우선순위 설정 필요함
- (중요) 이후 각 영역별로 검색하여 필요한 동작들을 수행하며 결과 수집함

3-2. 소스 프로그램의 변환과정
-  소스 프로그램의 명령어 가져와 메모리의 미리에 저장됨
-  명령어 종류에 따라 메모리에 저장되는 공간 달라짐
-  조건문 등 여러 종류의 명령어 존재 시, 해당 명령어 성질 반영해야 함
-  'DS', 'EN드' 등의 조건 문 포함 시, 처리 명령어로 변환 필요함
-  전체 소스 코드 통합 후, 전체적으로 단순화되고 중복된 부분 제거됨

3-3. 투패스 어셈블리의 특징
-  프로그램 복사 및 수정이 가능하도록 하며, 필요한 부분 변경이 용이함
-  강력한 포매팅 지원을 통해 명령어의 순서나 위치 등을 관리할 수 있음
-  변수 참조 시 전방참조 방식을 따름으로써, 효율적인 소스 코드 작성 가능
- (중요) 추가로 새로운 모듈이나 메모리 개발등에도 활용이 가능함
-  투패스 어셈블리가 제공하는 기능과 특성을 반드시 숙지할 것

4. 프로그램 번역과 어셈블리 활용

4-1. 프로그램 번역의 과정과 중요성
-  프로그램을 처음 읽어 그 구조를 파악하는 것이 필요함
- (중요) 프로그램 번역의 과정에서는 SO(객체식 복사), PT(질병복제),OT(손상 복구) 세 가지 요소를 이용함
-  각각의 요소는 다른 상황에서 다르게 작용하며 전체 프로그램의 실행 결과를 결정짓는 역할을 함
-  본 강의에서는 이를 통해 소스 프로그램을 최적화하여 목표 프로그램으로 변환하는 방법을 소개함

4-2. 어셈블리 프로그래밍의 특징과 어셈블리 레벨 소스 생성
- (중요) 어셈블리 프로그래밍은 기본적으로 포괄적인 명령어 혹은 구현하려는 명령을 표현하는 것이 중심임
-  어셈블리어는 주로 CPU의 제어장치에서 작업하는 방식을 모델링함
-  먼저, 입력 사항들을 분석하여 메모리 내 저장 가능한 공간에 해당하는 임직 기억장치에서 찾는 형태로 코드 변환 가능
-  이 과정에서 소스 프로그램을 객관적으로 만드는 것이 중요하며, 이를 위해선 최초의 번역과정에서부터 시작하여야 함

4-3. 매크로 어셈블리 및 서브 프로그램의 이해
-  마크로(=레퍼먼트) 어셈블리란, 반복되는 동작이나 명령어를 포함하여 전체 프로그램의 일부를 의미함
-  이때 중요한 점은  프로그램이 1번만 작성되어 필요할 때마다 삽입하거나 변경하는 것이 아니라 일괄적으로 적용되기 때문에 반복횟수만큼 메모리를 차지하도록 처리
- (중요) 또한, 메인 프로그램에는 이어서 부 프로그램을 적용하는 행위를 표현하기 위한 것으로, 깊숙하게 참고를 분석하고 개발됨
-  서브 프로그램은 자신의 성격에 따라 폐쇄형과 개방형이 있으며, 각각 다른 용도에 적합함

5. 소프트웨어의 명령어 실행 방식

5-1. 명령어 실행의 기본 방식과 종류 이해
-  소프트웨어에서 명령어 실행은 메인 메모리에서 시작하며, 해당 명령어가 성공적으로 수행될 때까지 차례대로 실행됨
- (중요) 명령어의 실행 방식에는 '폐쇄형'과 '개발형' 두 가지 종류 존재함
-  '폐쇄형'은 메인 메모리 내에서 수행되고, '개발형'은 메모리로부터 복사하여 수행됨
-  각각의 실행 방식에 따라 메모리 절약 효과가 발생하거나 아니오 발생 가능

5-2. 어셈블리 언어와 관련된 아이디어 및 방향
-  '마크로 어셈블리(또는 마크로 프로세스)'란 명령어의 반복 수행을 처리하는 방법
-  특히 '페루어 마크로 프로세스'는 메모리 내에서 처리되기 보다는 명령어의 반복적 수행에 초점을 맞춤
-  이것은 메모리의 절약 효과를 얻을 수 있으므로 메모리 절약이 가능한 접근 방식임
-  그러나 명령어 수행 속도가 느린 것이 단점

5-3. 마크로 프로세스와 그 사용 방안 이해
-  '마크로 프로세스'란 본문을 통째로 읽어야 한다는 방향성 지시
-  이는 각기 다른 명령어에 대해 다른 명령어를 생성하되, 본문 순서를 유지한다는 의미
- (중요) 이를 통해 흐름에 대한 표준화가 도모되며, 복잡한 문제 해결이 용이해짐
-  그러나 이러한 과정 중 일부가 제동이 오거나 피드백이 필요한 경우 이를 처리할 수 있는 기능이 사라질 수 있다는 단점 존재

6. 어셈블러, 노드 및 노드 관련 작업 이해

6-1. 어셈블러의 개념 및 작동 원리
-  어셈블러란 번역과정에서 사용되는 프로그래밍 언어임
- (중요) 마크 로브가 포함된 어셈블러는 소스 프로그램을 목적 프로그램으로 변환함
-  어셈블러는 번역 전에 미리 처리를 위해 든 것으로 인식됨
-  시작 과정에서는 마크로의 정의를 인식하며, 이후에는 이를 저장하여 사용함

6-2. 노드의 개념 및 작동 원리
-  노드는 프로그램의 4가지 작업(올/로케이션, 링킹, 리로케이션, 메모리 재배치)을 담당하는 객체임
- (중요) 전체 네 개의 작업들을 통해 주기억 장치에 프로그램을 롬촉하며, 메모리의 재배치는 운영체제에서 처리함
-  노드는 4가지 작업 중 적재기능만 담당하는 특성 있음
-  노드와 링킹은 모두 동적 노드에 존재하는 접속작업이며 메모리 재배치는 필수적임

6-3. 네트워크로서의 노드 이해
-  직접 다이렉트 링킹 노드는 4가지 작업 모두를 담당하며 동적 노드임
-  다이렉트 링킹 노드와 동적 노드 차이는 함수의 적재만 포함하는데 있음
-  기존 단계에서 불필요하게 발생하는 기능이 4가지만 넷워드는 각각 적용되므로 버너린 얘기에 불필요함
-  4개의 노드 유형 외에 모더니즘에 따라 더욱 다양성이 증가할 가능성이 있음을 시사함

7. 어셈블리 해석

7-1. 어셈블리 소개
-  번역과 동시에 로드 기능까지 포함함
-  번역과 롤 번역 모두 하지만, 로드는 면적 제한 때문임
- (중요) 유사문장 반복되면 노드로 만들고 문장을 다루는 데 사용함
-  각 번역 단계에서 수정되는 부분만 표시됨
-  숨기법(=) 기술은 기존 코드 작성에서 위협적으로 느껴질 수 있음

7-2. 컴파일러의 역할
-  고급언어로 작성된 소스 프로그램을 기계 언어로 변환함
-  소스 프로그램을 어휘 및 구문 분석하여 중간 코드 생성함
-  중간 코드를 코드 최적화하여 목적 프로그램 생성함
-  컴파일러와 개발자의 목표는 각각 다름
-  컴파일러는 번역 방식, 개발자는 통역 방식을 사용함

7-3. 컴파일러의 단계
-  소스 프로그램을 입력받아 어휘 분석과 구문 분석을 통해 중간 코드 생성함
-  중간 코드 생성 후 코드 최적화를 통해 목적 프로그램 생성함
-  코드 최적화 단계 이후에 기계 언어로 변환하여 저장함
-  첫 번째 개발 단계인 어휘 분석과 구문 분석은 기계와 독립적임
-  이후의 단계들은 기계와 종속적임

8. 컴퓨터 프로그래밍 및 전문화 이해

8-1. 프로그래밍 언어와 중간, 최적화 과정 이해
-  프로그래밍 언어(컴파일러)를 이용하여 데이터 처리 과정 설명함
- (중요) 중앙코드 생성 후, 코드를 최적화하고, 이어서 1 또는 0을 발생시킴
-  이후, 최종 결과물인 프레임을 모으고 최종적으로 실행 파일을 생성
-  프로그래밍 단계별 특성 파악은 이해와 직결됨

8-2. 컴파일러와 전문 분야의 이해
-  전산과 과목으로 전공필수로 다루는 컴파일러 강의 소개
-  프로그래밍에서 적합한 기계 선택은 알고리즘과 연관돼 있어야 함
-  기계와 독립적이거나 종속적인 관계에 따라 작업 방식이 달라짐
-  전산과 학생들에게 추천하는 강의 자료 활용 권장

8-3. 현대의 대학생들과 그들의 공부 태도 평가
-  대학을 상징하는 한국의 '대학'이라는 표현에 대한 비판적 평가 제시
- (중요) 대학 생활과 관련된 위험성과 부작용에 대한 우려 제기
-  학문 진전에 대한 질투와 비판을 통해 신중한 방법을 제언
-  개인의 능력 향상을 위한 충분한 노력과 시간의 필요성을 강조

화자 1
00:11
자 전국에 계시는 우리 M2M 생방송 안방 가족 여러분 함께 하겠습니다. 아 여러분 좋습니다. 박수 소리가 굉장히 크게 들립니다. 그죠 예 좋아요. 자 이제 무르익었죠. 여러분들 그죠 그래서 우리가 어제 아 우리가 드디어 운영체제 그죠 그래 앞부분에 컴퓨터의 구조와 환상적으로 정리했죠. 그죠 더 이상 이야기하면 간첩이겠다. 만들어 놓은 시페뉴 맥 메모리 각종 아이오 그리고 파일 이런 모든 리소스를 관리하고 그리고 우리 사용자가 여러분의 컴퓨터를 아주 쉽게 사용할 수 있도록 환경을 제공해 주는 거대한 프로그램의 집합체 오에스를 배우고 있습니다. 맞습니까? 그래서 우리가 어제 OS에 입문을 했지 OSA 계열을 통해서 이런 OS의 목적 아주 중요했다.

화자 1
01:10
이런 OS가 운영체제 프로그램이 컴퓨터 에서 뭐야? SIRPOT을 향상시키죠 스리푸시 모더나 단 2시간당 주어진 시간 동안 컴퓨터가 많은 할 수 있도록 작업의 양을 향상시키고 그다음에 또 어떤 게 있었냐 오케이 턴 라운드 타임 빨리 작업이 끝나도록 턴 어라운드 타임을 단축시켜주고 그다음에 사용 가능도 다른 정말로 이용 가능도 여러분들이 원하는 즉시에 컴퓨터를 제공해주는 환경을 제공해주고 그죠 그 사용 가능도를 향상 시켜주고 그다음에 정확성 뭐다 정확성 정확하게 일이 진행되도록 해주는 개념 신뢰성 향상 이 4가지를 향상시키고 단속시키는 게 우리가 배우고자 하는 OS의 목적이었다.

화자 1
02:01
그죠 그래서 그런 이야기로부터 어제 우리 생각하나 수은차 순차 처리 배치 프라세싱 멀티 프로그래밍 멀티 프라세싱 리얼타임 타임샤링 분산처리까지 1472로 이야기를 했다. 그죠 자 그래서 이제 오에스 세계로 들어가면 되는데 우리가 배우는 게 오에스뿐이 아니고 시스템 소프트웨어들아 이렇게 시스템 소프트웨어 우리가 쉽게 사용할 수 있도록 다리 역할을 해주는 소프트웨어 중에는 OS뿐이 아니고 뭐가 있더라 트랜스레이트 언어 번역 프로그램과 그다음 적재시켜 주는 적재기 노드가 있더라 그러니까 OS로 들어가기 전에 이런 트랜스레이트와 노드에 대해서 잠깐 보고 가자 이 말이야. 왜 문제가 한 문제 나온다 이 말입니다. 되겠나 또 문제를 떠나서 우리가 한번 공부를 해 봅니다. 그래서 오늘은 드디어 컴파일러와 인터프리트 즉 언어 번역 프로그램과 노디에 대한 이야기를 합니다. 그죠 어제 했는 거 정리됐지 조금 서론이 길었다 자 들어갑니다. 아 요러더니, 들어가 봅시다 좋습니다.

화자 1
03:00
자 어제 우리가 이제 시스템 소프트웨어에 대해서 공부를 했습니다. 그죠 그래서 이제 그중에서 우리가 제일 먼저 우리가 어셈블레 랭귀지로 된 어셈블러부터 공부해보자 에 어셈블러 랭귀지 어셈블러 자 이 어셈블리의 정의는 뭐고 오케이 어셈블리 랭귀지로 된 심블링 랭귀지로 작성된 소스 프로그램을 이 소스 프로그램 다른 말로 뭘 한다. 오케이 소스 대기라 해도 되고 또 어제 했잖아. 소스 코드 같은 말입니다. 또는 소스 파일 같은 말이제 생각나나 그 다음에 소스 모듈 다 같은 말이다. 그죠 예 또는 소스 프로그램 이런 소스 프로그램을 일과영으로 된 기계 머신 연기주로 구성된 목적 프로그램 1과 0으로 구성된 프로그램으로 번역 변화시켜주는 시스템 프로그램이 뭐다 어셈블러다 이런 이야기를 했죠. 그래서 어셈블러 회의에서 한번 정리를 해보자 이 말입니다.

화자 1
03:59
자 어제 끝날 때 이야기했죠. 그죠 어셈블러 그래서 이 정의고 오늘날 어셈블러는요 번역을 1번 만에 못합니다. 항상 이 소스 프로그램을 2번 번역한다고 해 가지고 오늘날 어셈블리는 투 패스 어셈블리다 1번 만에 번역하지 않고 1번 번역하고 1번 더 훑어 내려가야 비로소 번역이 완성된다. 해 가지고 투 패스 어셈블러야 알겠냐 투패스 어셈블러 자 그리고 다시 보면은 여러분들이 이제 어셈블 랭귀지를 배웠다 하면은 이제 어셈블 랭귀지 프로그램을 작성하는 사람이 잘 없습니다마는 그래도 전문가들 저는 아직까지 어셈블 랭귀지를 즐겼습니다. 그죠 이 어셈블리 랭귀지로 된 어셈블리 랭귀지로 작성된 이게 좋겠네 작성된 소스 프로그램 원시 프로그램을 이 어셈블 랭귀지는 우리가 알아들을 수 있는 상황이죠. 이 소스 프로그램을 지금 어셈블리라는 시스템 프로그램이 뭐다 머신 랭귀지로 1과 0으로 구성된 목적 프로그램으로 번역을 해 줍니다. 여기에 대해서 배우자 이 말입니다.

화자 1
04:56
그죠 그래서 여러분들이 어셈블리는 못해도 좋다. 이 어셈블리가 어떻게 번역하는가? 그게 문제가 나오는 겁니다. 그죠 그래서 어셈블리 넘겼지 이것만 해도 여러분들 한 10시간은 들어야 됩니다. 과거에는 이 어셈블리에서만 20문제 나왔지만 요즘 나오지 않지만 그래도 크게 함 공부해 보자 이 말입니다. 이 어셈블리 랭귀지는요 기계와 호환성이 없다. 이 말이죠. 기계와 호환성이 없다는 건 뭡니까? 기계마다 프로그램 장성이 달라요. 요즘 우리가 사용하는 고급 언어들은 여러분 씨나 COVOL이나 비주얼 베이징이나 자바 이런 거는요 기계와 기계 기계에 아 호환성이 있습니다. 에이에도 돌아가고 비에도 돌아가고 그죠 씨라는 기계에도 돌아가지만 어셈블 랭귀지는 기계와 호환성이 없어요. 기계마다 좀 프레임 자석이 달라야 돼요. 예 그래서 이거는 기계에 가까운 언어죠 그죠 그래서 기계와 독립적이 아니고 종속적 랭귀지입니다. 그죠 근데 오늘날 고급 언어들은 뭡니까?

화자 1
05:54
기계와 독립적이자 기계하고 관계없이 프로그램을 작성하면 되고 이 작성된 프로그램을 컴퓨터에 집어넣으면 모든 컴퓨터에 돌아가는 겁니다. 그래서 오늘날 고급 언어들은 뭡니까? 에 고급 랭귀지는 우리 앞에서 배울 때 기계와 독립적이고 기구와 호환성이 뛰어나다 호환성 그죠 여기에 반해서 어셈블리는 호환성이 없다. 서로 상호 교환성이 없고 기계와 종속적인 냉귀지다 기계에 따 의해서 프로그램 작성이 달라진다 이런 이야기다잉 요거 다 말아놓고요. 얘는 어셈블리 냉귀지 명령어는요 어셈블리 랭귀지는 크게 3개의 명령어로 구성되더라 머신 명령어 어 머신 이스트럭션 이 머신 명령문은 이제 컴퓨터에 동작이나 실행을 지시하는 실행어다 그죠 동작 지시 명령어들이고 그다음에 어셈블루 명령어 어셈블레의 명령 다른 말로 우리는 수우드 명령어라 합니다. 피가 묵어입니다. 수우드 명령어 어셈블루에게 정보를 제공해주는 비실행어입니다. 그죠 정보를 제공해 주는 거고, 그다음에 마크로 명령어 있습니다.

화자 1
06:53
마크로 명령은 이제 반복되는 부분을 지정하는 명령어예요. 마크로 명령어 반복되는 부분을 처리해 주는 명령은 오늘의 어셈블렌즈는 크게 3개의 명령으로 구성되어 있다. 그냥 뭐 중요한 건 아니고 참고라 논문입니다. 신명령어 어셈블링 명령어 마크로 명령어 이 3개의 명령어들로 구성돼서 하나의 프로그램을 완성한다. 그러니까 어셈블링 랭귀지로 작성된 프로그램은 이 머신 명령어 어셈블레 명령어 이런 것들로 구성되어 있다는 겁니다. 그죠 그럼 이제 어셈블링 랭귀지 배운 사람들은 뭐고 그러면은 어셈블리 랭귀지에 어셈 명령은 어떤 게 있노 어셈블리 명령어는 어떤 게 있노 마크로 명령은 어떤 게 있나 이거 다 배우면 뭐다 여러분들은 어셈블리라는 언어를 하나 정복하게 되는 겁니다. 근데 이거는 옛날 같으면 내 강의를 해줬는데 필요 없죠 왜 시험에도 안 나오고 요즘도 어셈블리 된 랭귀져 가지고 프로그램을 작성하는 사람이 몇 명 없습니다. 그죠 개인적으로 배우고 싶은 사람들은 저 강의를 따로 들으세요.

화자 1
07:50
어셈블랭귀지 특강 하면 해줄게 왜 환상적으로 하고 있습니다. 참고로 요 정도는 시험에 나올 수가 있으니까 알겠나 굳이 어셈블 랭귀지를 배울 필요가 없더라 그죠 여러분들 자 그래서 컴퓨터 나라의 말 언어를 하나 배워야 되지만 굳이 어셈블리를 배우지 말고 최신 언어 같은 거 요즘 여러분들 자바라든지 비주얼 언어라든지 좋은 언어가 상당히 많습니다. 그죠 자 어셈블리에 대해서 개념을 잡았제 어셈블러 자 그러면 한번 직접 여러분들 함 보자 이 말입니다. 한번 보자 자 여러분들 이거 암기할 필요 없다. 그래서 어셈블루가 어떻게 어셈블리라는 시스템 프로그램이 어떻게 번역하는지 그거 보면 되는 거예요. 그래서 내가 예를 하나 가져왔습니다. 10 플러스 20이란 일을 컴퓨터한테 시켜 봅시다 이걸 컴퓨터 시킬 때는 어 요 10 누르고 더하기 20 누른다고 컴퓨터는 일을 하지 않습니다.

화자 1
08:43
여러분 탁상용 계산기 케쿨레이트 있제 탁상용 계산기는 여러분들 10 더하기 20 들어오면 30을 줘요 근데 우리가 배우는 범용 컴퓨터 여러분 앞에 있는 그 피씨 또는 서버들 이런 것들은 컴퓨터 프로그램을 작성해야 됩니다. 이걸 시키더라도 그죠 근데 이걸 프로그램 작성할 수 있는 사람은 아주 복잡한 것도 작성할 수 있습니다. 알겠나 프로그램의 기초는 이거다 그래서 한번 보자 이걸 이제 우리가 베이직 언어로도 자 비계어로도 작성할 수 있죠. 일과형으로 복잡하겠죠. 그리고 어셈블리 언어로 작성할 수도 있고 포트 안으로 할 수도 있고 코볼로 할 수도 있고 씨로 할 수 있고 비주얼 베이직으로 할 수도 있고 어떤 언어든 다 작성할 수가 있어요. 맞나요? 맞잖아. 밥 먹었나 이걸 그죠 영어로 말할 수도 있고 어 그렇죠.

화자 1
09:29
우리 배고프나 뭐 이것도 영어로 할 수도 있고 중국말로 할 수도 있고 경상도로 할 수도 있고 전라도로 할 수 있고 맞나 아이 원거리 맞나 어 중국말로 할까 지팔노마 요거 아이다. 밥 먹으세요. 이 말입니다. 참 진짜인데 중국 진짜 또 일본만 됐습니다. 니 이벤트 내과목은 심플라스 20 자 어셈블리로 한번 작성해 보겠습니다. 내가 어셈블링 앵귀지를 낸 소스 프로그램 얘기예요. 자 이걸 작성하기 위해서 JJH 프로그램 이름입니다. 우리 여러분 고급언어는요 이걸 어떻게 한다.

화자 1
10:15
에이는 10 비는 EC C는 A+ 비 이렇게 하지만 어셈블리는 고급 언어는 명령문 형태로 되지만 어셈블리는 명령어 형태로 돼요. 노드 일에이 그죠 오피코드 오프랜드 이 주소 명령 어제 생각나나 애드 일 비 스토어 일시 그리고 그죠 에이 디파인 컨스턴트 10 비 디파인 컨설턴트 몰라도 좋다. 20 씨 디파인 스토리지 에프텐 엔드 제이에이치 요렇게 요렇게 요게 어셈블리 랭귀지로 된 10과 20을 더하라는 소스 프로그램입니다. 그죠 고 이름을 예를 들면 우리가 어 뭐 에스 점 뭐 어셈블리니까 뭐요 에이에스엠 요게 어셈블 랭귀지는 소스 프레임이에요. 이렇게 소스 파일이죠. 예 그러면 이거는 뭐여 몰라요. 근데 이 소스 프로그램을 어떻게 구성하냐?

화자 1
11:14
스타트라는 명령어는 어셈블레 명령어입니다. 비실행어예요. 아까 말했던 어셈블름 명령어 어셈블레 명령어 노드는 뭡니까? 머신 명령어 실행명령어 머신 명령어 머신 명령어 뭐신 명령어 어셈블러 디파인 어셈블러 어셈블러 명령어 어셈블러 명령어 그렇죠. 현재 이 명령 소스 프로그램은 머신 명령어와 어셈블러 명령어로 구성되어 있군요. 마크로 명령어는 없네 그죠 그래서 요렇게 하나의 진짜 어셈블러 로텐 소스 프레임입니다. 요거는 ABM 360에서 돌아가는 어셈블러예요. 그러니까 PCS는 좀 달라요. 예 그리고 요게 뭐냐 하면은 이 프로그램에 스타트 첫 번째를 명령어 첫 번째를 천사 메모리 1004번지에 넣으라 카고 거기에 메모리 시작하는 이 천사를 13번 레지스트를 베이스 레지스터라고 지정하라 카는 걸 몰려줬습니다. 그리고 이제 1번 레지트로 메모리 에이 번지에 들어있는 데이터를 가져온다는 거고요.

화자 1
12:06
또 비 번지에 들어있는 데이터와 1번 레저트 들어있는 걸 더하라는 거고, 그다음에 1번 레저트에 들어간 결과값을 씨 번지에 집어넣으라 하는 거고, 그리고 에이 번지에는 뭡니까? 십이라는 데이터가 있다. 이런 거예요. 자 봐요. 여러분들 어셈블리 랭귀지는요 자 이걸 여러분들 고급 언어로 내가 이걸 아까 다시 짜볼게 베이직 언어를 한번 짜볼게요 고급 언어는 베이직 언어 지따블유 베이직으로 해볼게요 자 10번 에이는 에이는 10 20번 문장에 비는 20 30번 문장이 씨는 A+ 어렵다고 생각하지만 이게 중요한 건 아니다. 지금 뭔가를 하기 위해서 하는 겁니다. 그냥 쭉 그냥 듣고만 있어 40분에 이제 뭡니까? 프린터 보여줘 보여줘 프린터 씨 50번에 119만의 엔드 요놈은요, 여러분 뭐 고급 언어 베이직 언어로 작성된 소스 프로그램이죠. 요거는 어셈블리를 작성해 놓은 거구요. 자 그럼 잘 봐요. 고급 언어들은 여러분 봐봐요. 에이는 10 에이라는 정보를 먼저 가르켜 줍니다.

화자 1
13:05
에이라는 방에 메모리에 10이라는 데이터 있다. 선언하고요. 비라는 메모리에 비라는 방에 20이 들어있다. 그리고는 뭐예요? 명령 내립니다. 씨방에다가 에이방에 들어있는 뭐 에이방에 들어있는 식과 비방에 들어있는 20을 더해 가지고 씨방에 집어넣으라 합니다. 그러면 씨방이 뭐가 들어간다 30이 더 갑니다. 그리고 보여줘 씨방에 있는 거 보여줘 카면 씨방에 들어있는 씨방에 들어있는 30이 모니터로 출력되고 119만 해라 합니다. 자 고급 번호는요 한번 번역으로 컴퓨터는 출력을 해줍니다. 왜 에이를 미리 알려줬어요. 에이에 대한 정보 정보 알려주고 하는데 자 어셈블링 연기진 함 봐봐 이놈 함 봐봐요. 그거 없어 자 이거는 지우고 메모리 104분지부터 시작해라 카는 거거든. 노동 1회 에이에 대한 정보가 없어요. 첫 번째 자 이걸 이제 번역을 합니다. 누가 어셈블레로 번역하는데 첫번째 번역을 할 때 에이에 대한 정보가 없어 그냥 메모리 에이 번지에 있는 걸 1번에서 갖다 놔라는 거거든. 그리고 메모리 B 번지에 대한 정보가 없어요.

화자 1
14:04
정보는 언제든 여기 있습니다. 여기에 에이에 대한 에이의 디파인 컨스턴트 에이에 들어있는 컨스턴트 쌍수는 10이다. 자 고급 언어는요 미리 가르켜주고 하기 때문에 1번 번역으로 이게 끝나는데 어셈블리는 봐봐요. 1번 번역할때요 에이에 대한 거 몰라요. 그냥 에이에 대하는 거 몰라 그리고 비에 대해서도 몰라 몰라 몰라 몰라요. 모른단 말이야. 그리고 일을 합니다. 그런데 여기까지 내려오니까 에이에 대해서 알아요. 요 요 그래서 이제 두 번째 번역에서 에이를 갖다 아 에이를 보니까 에이는 여기서 가르켜 주지 10이고 비는 20이라고 가르켜줘요 그래 1번 번역해서 몰라요. 2번 번역하면서 A에 10 올려주고 B에 20을 넣어줍니다. 오케이 이걸 이야기하려고 내가 이거 했다. 어셈블리의 특징은 뭐예요? 1번만에 번역이 안 됩니다. 아니 왜 어셈블리의 변수 참조는요 자 고급원 후에 이 변수 참조는 변수는요 후방 참조입니다.

화자 1
15:01
후방 구보형 근데 이 어셈블리는 변수 참조가 뭐요 여기 아 이게 전방인데 에이에 대한 정보가 여 있죠. 이게 전방 참조야 저 이거 어려운 이야긴데 전방참조법을 따르고 있습니다. 눈은 어셈블리는요 변수 참조를 후방 참조가 아닌 뭐다 어셈블리는 전방 참조를 하더라 그렇기 때문에 전방참조 뭐 변수 참조를 어 이게 뭐야? 전방 이게 전방이야 전방참조를 하더란 말입니다. 전방 근데 고급 언어는 뭐예요? 이게 후방이죠. 후방 전방 창조를 하기 때문에 번역을 몇 번 한다. 1번 만에 모호한단 말이에요. 2번 해줘야 된다. 이 말입니다. 그러니까 어셈블류로 작성된 프로그램 번역을 컴파일어를 번역을 어셈블 몇 번 한다. 2번 합니다. 오늘 고급어는 1번 만에 번역이 되는데 1번 번역하고 1번 더 번역해 줍니다. 그래서 오늘날 어셈블레는 뭐다 투 패스 어셈블러다 이 말입니다. 알겠나 시험에 나와요. 왜 오늘날 어선벌레 언어는 2번 번역하느냐 답은 뭐다 변수 참조가 뭐다 전방참조법을 따르기 때문에 즉 변수 선언이 프로그램 뒤쪽에 나오기 때문입니다.

화자 1
16:00
이해되나 자 이거 암기하면 안 된다. 몇 분 시험에 나옵니다. 알겠죠. 그래서 오늘날 어셈블리는 투 패스 어셈블라는 겁니다. 이해되나 이거 이걸 몰라 그래요. 이걸 가르켜 줄려고 하는 거예요. 그죠 이렇게 해서 이런 특징을 가지고 있는 게 어셈블리 된 기자 그지 고급 언어하곤 다르다 이 말입니다. 에 그러니까 투 패스 어셈블리가 된다. 그죠 아 좋다. 그죠 알겠나 이거 뭘 해도 좋습니다. 예 좋아요. 자 그럼 한번 보자 이 말입니다. 자 그럼 투 패스를 하는데 자 그 다음 장 넘어가죠 자 요것만 알면 돼 시험은 바로 요거 가끔씩 나오죠. 문제 나오면 여기서 나옵니다. 자 어셈블리는 여러분들 1번 번역하고 2번 만에 목적 프로그램을 만들어 낸다 했죠. 이 소스 프로그램을 가지고 원시프로그램 원시프로그램 어셈블리 랭귀지로 작성된 이 소스덱 소스 파일 소스 코드를 1번 만에 번역을 뭐하고 어선벌레는 뭐다 투 패스 한다는 거죠. 근데 첫 번째 과정에서 어떤 행위를 하냐?

화자 1
16:58
이게 시험에 나오지 첫 번째 번역에서 그죠 처음에 함 봐봐요. 첫 번째 번역에서 최종 만들어내는 거 생성물이 뭐냐 하면은 이 소스 프로그램의 사본을 생성 화살표 이래 있는 건 생성이야 생성 다른 말로 출력입니다. 같은 말이죠. 출력이나 생성이냐 만들어냅니다. 그런데 첫번째 과정에서 여러분 한번 봐봐 ST 자 ST가 심벌 테이블이야 심벌 심벌 변수 테이블이다. 심벌 테이블을 ST라 합니다. ST 그리고 LT는 뭐냐 하면은 LT는 니트를 니트를 상수자 니트를 니트럴 테이블을 LT라 합니다. 이거는 변수 테이블이고요. 여러분 상수테이블이야 그리고 엠오티는 MOT는 MOT는 MOT는 OPERATION 테이블입니다. 머신 오퍼레션 테이블 머신 명의가 들어있는 테이블이다. 이 말입니다. 머신 오퍼레이션 또는 명령어 오퍼레이션 테이블입니다.

화자 1
17:53
그 다음에 피오티는요 피오티는 여러분보다 수드 어셈블링 명령어 즉 이거 다른 말로 수드라고 했지 P는 뭡니다. 수드 오퍼레이션 테이블입니다. 그렇지 자 잘 봐라 요게 시험에 나옵니다. 암기하면 절대로 안 됩니다. 자 여러분들이 어셈블리를 랭귀지로 어떤 소스 프로그램을 만들었죠. 이놈을 어셈블리가 번역을 해줘야 1과 0으로 된 목적 기계열로 된 목적 프로그램이 만들어지잖아. 이걸 컴퓨터 알아듣는 거 아니야. 이거 알아듣는 게 아니고 아니고 이놈을 여기까지 만들기 위해서는 어셈벌레는 2번 번역을 한다는 거야. 왜 변수 참조가 전방참조를 따르기 때문에 대체 자 됐습니다. 첫 번째 과정에서 뭐요 첫 번째 번역을 하면서 심벌 테이블을 뭐한다. 생성했네 생성 이게 생성이죠. 첫 번째가 생성을 합니다. 첫 번째 과정에서 뭐 ST 생성을 이게 시험에 나온다는 거예요. ST 생성 그리고 또 뭐 생성한다. LT 생성을 합니다. 리터럴 테입을 생성하고 엠오티 한번 봐봐 MOT는 뭐 한다.

화자 1
18:52
첫 번째 과정에서 엠오티는 자 뭐야? 첫 번째 과정에서 이용합니다. 이용 사용한단 말이야. 사용 또는 이용한단 말이에요. 에 이용 또는 사용 같은 말입니다. 그리고 피오티도 봐봐 첫 번째 과정에서 뭐 한다. 이용하죠. 피오티 이용합니다. 요거 여기 나오는 거야. 피오티 이용한다. 그리고 PC는 뭡니까? 다음 명령어의 번지가 들어있는 컴퓨터 구조에서 배아체 프로그램 카운트 레지스터 어 PCR 또는 LC 또는 IC를 알죠 임 이 명령어의 번지를 뭐 PC를 뭐 한다. PC를 이용합니다. 프레임카운트 들어있는 영역을 보고 다음 영역 수행하겠지 알겠나 이 PC는 다른 말로 뭘 한다. PCR 다른 말로 IC 인스트레션 카운트 다른 말로 로케이션 카운트 NC 다 배웠잖아요. 어디에서 컴퓨터 구조에서 됐나 그러니까 컴퓨터 구조를 잘 배워 놓으니까 아주 쉽죠 시험엔 이렇게 나와요. 어셈블레에서 첫 번째 패스해서 첫 번째 작업 첫 번째 패스해서 하는 일이 아닌 것 이거 에스티 이용 틀렸죠 그죠 요게 나오는 거예요.

화자 1
19:52
자 그럼 이걸 암기하는 건 아니다. 이 말입니다. 자 잘 봐라 요하고 두 번째 과정에서 여러분 뭐요 그리고 이제 첫 번째 과정 최종 만들어내는 게 뭐다 사본 프로그램의 사본을 생성하지 사본을 생성합니다. 요게 첫 번째 과정이고 두 번째 과정에서 뭡니까? 두 번째 과정 전부 다 이용해요. 보니까 자 이 사본을 이용하죠. 사본 소설프로그램 사본 이용 그리고 ST 이용 LTE 이용 MOT 이용 POT 이용 어 그리고 PC 이용 다 이용이다. 이용 그리고 만들어내는 게 뭡니까? 최종 산출물이 목적 프로그램 생성 최종 일과형으로 된 목적 프로그램 생성 그리고 거기에 대한 리스트 어떤 결과물 리스트 생성 요래 돼 있죠. 요게 시험에 나오는데 암기를 하지 마라 이 말입니다. 자 이게 무슨 말이냐 이 말입니다.

화자 1
20:45
내가 예를 한번 보여줄게 내가 인제 어셈블레가 되어 가지고 아까 거기 그거 10과 20 그 소스 풀로 내가 번역을 할게요 직접 이 몸이 몸소치니 내가 어셈블레가 돼서 번역해 뿌께 어 번역합니다. 아까 그 프로그램 예 뭐 됐어요. 알아요. 자 아까 이래 하면은 여러분 그죠 아까 보니까 그 아까 그 뭐예요? 그 저 에이 에이에는 디파인컨스트 무슨 암대도 CB 들어가 있었고요. 비에는 20이 들어서 있었고, 씨는 뭐가 들어갈지 몰랐죠 요 테이블이 뭡니까? 요 테이블이 뭡니까? 바로 리터럴 테이블입니다. LT예요. 상수 값을 저장한 테이블입니다. 그리고 처음에 번역을 하다 보니까 처음에 번역을 하니까 이제 뭡니까? 어 뭐 에이가 에이가 여러분 인제 메모리 실제 메모리죠 메모리 에이가 예를 들면 100번지 합시다. 어 야 그 천인데 비가 200번지 어 뭐 101번지 씨가 102번지예요.

화자 1
21:43
자 요게 심볼 테이블입니다. 아까 그 소속 프로그램을 어셈블리와 번역을 하면서 지가 그 소속 프레임을 훑어내리면서 심블 테입을 생성하죠. 아 에이는 메모리 에이는 100번지를 이야기하는구나 메모리 비는 101번지를 이야기하는구나 요런 실제 변수하고 실제 메모리 주소를 연결시켜 놓은 테이블이 무슨 테이블이다. 심벌테이블이라니까 요걸 지가 만들어내죠 왜 번역하면서 생성을 하죠. 그리고 아까 또 뒤쪽에 가서 뭡니까? 근데 에이에는 10이 들어가 있고 비에는 20 어 요런 상수들이 들어와 있더라 씨는 뭐 아직 계산해서 여기 모른다 이거예요. 요런 테이블이 뭐다 상수 저장 상수 테이블 첫 번째 과정에서 여러분 봐봐요. ST와 액체를 생성했지 생성하면서 여러분 한번 봐봐 아까 그거 있었으면 좋은데 요거 요거 썼습니까? 예 요거 지울게요 에 딴 게 하나도 아니다. 그리고 아까 제가 여러분들 이러한 명령어가 있었고, 여기에 뭐예요?

화자 1
22:42
수도명령어라 했죠. 샘블린 명령어지 그다음에 유징 하는 명령어가 있었고, 맞나 그다음에 저 뒤에 가니까 DC라는 명령어 DS라는 명령어 또 앤드라는 명령어 뭐 이런 게 있었습니다. 요런 요런 테이블이 뭐다 바로 피오티입니다. 수드 오퍼레션 테이블 즉 즉 이거 뭐야? 수도 명령어 어셈블리 명령어를 일괄형으로 대응시켜 놓는 테이블이 피오티입니다. 그리고 아까 명령어 보니까 또 뭐가 있었습니까? 여러분들 노드 어 그다음에 뭐 에드 스토어 이런 명령 있었지 이 명령어도 인제 일반용으로 다 표현되겠죠. 요 테이블이 무슨 테이블이다. MOT입니다. 여러분들 이거 야 이 정도까지 공부하면 끝내줍니다. 그렇지만 이거 여러분 암기하는 거 아니에요.

화자 1
23:40
이 엠오티는 피오티와 엠오에서 이미 어셈블루가 가지고 있습니다. 스타트라는 명령어에 들어오면 이런 일명으로 번역하라 이렇게 전류를 흘려라 유증이란 명령어가 들어오면은 이런 식으로 바꿔라 이런 테이블이 뭐 어셈블링 명령어를 일관용으로 연결시킨 테이블이 피오티고 수도 명령어 피오티고요. 머신 명령어 즉 노드 에드 이런 명령어 들어오면 실행어가 들어오면 이런 글을 연결시켜라는 게 MOT입니다. 이건 이미 누가 가지고 있다고 MOT가 진짜 가지고 있다니까 알겠나 이거 첫 번째 아까 그 프로그램을 첫 번째 번역하면서 뭐 이런 ST를 만들어내고 이건 LTE를 만들어내죠 근데 이놈은 POT와 MOT는 지가 가지고 있는 걸 이용하죠. 이용을 해 가지고 스타트에서 맞는 요 일면 값을 찾아내고 맞나 안 맞나 요런 것들 이미 내장돼 있죠. 이거는 그래서 요게 이용이다. 이 말이야. 알겠나 이 PC는 뭡니까? 요 명령 수행하고 다음 명령 수행할라 카면 요 번지를 이용해야 되니까.

화자 1
24:37
자 이해되나 그래서 여러분들 첫 번째 번역에서 이 2가지를 만들어내고요. 요 두놈을 이용하고 PC를 이용합니다. 그래서 최종 생성하는 게 소수 프로그램에 사본을 만들어내고 두 번째 과정에서 이제 이걸 전부 다 이용하죠. 이용하면서 드디어 뭐다 아 그래 메모리 100 어 에이가 100인데 그럼 메모리 100번지에 뭐 어 10을 넣었구나 연결시키는 거예요. 두 번째 과정에서 에 그다음에 메모리 101번지에 20이 들어가고 어 메모리 102번지 아 더 했는 거 30을 집어넣고 이래는 거예요. 두 번째 과정에서 전부 다 이용이요. 어 이걸 전부 이용하고 최종 만들어내는 게 뭡니까? 모든 걸 일괄형으로 다 바꿔버리는 거예요. 에 목적 프로그램 생성하고 거기에 대한 산출물 리스트들이 생성해 나가는 겁니다. 알겠나 내가 지금 여러분들 어셈블레가 돼 가지고 아까 10 플러스 20이라는 어셈블레 냉기지로 된 소스 프로그램을 번역을 하고 첫 번째 번역 두 번째 번역을 했습니다. 되겠나 그래서 이걸 어셈블레 직접 이렇게 만들어내는 거예요.

화자 1
25:36
요거 만들고 요걸 생성해내고요. 에 내가 어셈벌레가 됐다. 여러분 여기까지 아는 사람들 실은 이거요 대학원 가정이다. 그럼 내가 왜 이런 이야기를 하느냐 이 자체는 모자도 좋지만 여러분이 저 이야기를 듣고 요 암기하는 거 하고 전혀 모르고 딴 데 들어가 봐 이거 이거 가르켜 주는 거 어디 있노 안개의 새끼들 지귀 불러 이 뭐 뭔 말인지 알려나 이거 대충 듣고 되겠죠. 이거 이게 시험에 나온다는 거예요. 되겠습니까? 에 그래서 시험에 다음 중 어셈블리에 첫 번째 과정에서 첫 번째 과정에서 이용되는 게 아닌 것 뭐 이런 게 나오는 거죠. 그러면 ST 생성 LT 생성 MOT 이용 POT 이용 피씨 이용 뭐야? 사본 생성 그죠 두 번째 과정에서 사본 이용 STE 다 이용이고 목적 프로그램과 리스트 생성했죠.

화자 1
26:25
됐나 예 이 정도 예 자 내가 지금 어셈블리가 되어 가지고 직접 친이 몸소 여러분한테 보여줬다 뭐 번역하는 과정을 컴퓨터 내부 동작을 그래서 여러분들 한번 봐놓은 게 좋습니다. 그죠 물론 암기할 수도 있지만 이 암기를 어떻게 원리가 빠져나오는지 알아야 되겠다. 이 말이요. 예 좋습니다. 자 다음 장 넘어가 봅시다 지금 시간이 어떻게 됩니까? 요즘 생중계라서 30분 지났나요? 좋아요. 자 어셈블리는요 그 정도면 충분하고 그다음에 여러분들 매크로 어셈블리 한번 보자 매크로 어셈블러 자 현재 여러분들 우리가 이제 다음 장부터 다음 시간부터 이제 OS에 들어가면 OS에 들어가기 전에 나머지 시스템 소프트웨어 보는 거죠. 시스템 프로그램 시스템 프로그램보다 OS 어 이런 트랜스레이터 그다음에 노드가 있잖아요.

화자 1
27:19
그죠 그러니까 OS는 뒤에서 보고 이제 그 OS 보기 전에 번역 개념 번역 소프트웨어하고 적재소프트웨어를 보는 거다 시험에 왜 여기도 한 2문제 나온다는 거야. 자 마크로 어셈블리어는 뭡니까? 아까 어셈블리어는 뭐야? 어셈블리어라는 기주로 작성된 소스 프로그램을 이게 맞아요. 이쪽으로 가버렸네 좋습니다. 예예 좋아요. 이거 좋아요. 소스 프로그램을 이제 어셈블레가 뭡니까? 번역을 해가지고 뭐 1과 영어로 구성된 목적 프로그램 만들어주잖아. 만들어주죠 자 만들어 이제 마크로셈블리는 뭐냐 이 말입니다. 마크로가 뭐냐부터 한번 보자 매크로 이게 많이 나옵니다. 매크로는요 컴퓨터에서 자주 반복되는 동작이나 반복되는 코드나 반복되는 명령어를 우리는 마크로 합니다. 반복되는 부분 반복되는 동작이나 반복되는 코드나 반복되는 부분 이런 걸 우리는 매크로라고 합니다.

화자 1
28:16
매크로 그러니까 워드 프로세스에서도 여러분 매크로 기능이 있는 거예요. 매크로 이게 무슨 말이냐 프로그램을 짤 때나 이런 문서를 작성할 때나 1가지다 내가 어떻게 인제 문서를 작성한답시다 문서를 쫙 늘어가는데 여 보이 여기에 보니까요? 여기에 뭐 예를 들면은 뭐라 할까 국민교육헌장이 나와요. 그럼 국민교육 작성했어요. 또 문서를 뜨고 또 국민교육원장 또 나와요. 아이 또 썼어 또 문서를 잡아서 또 국민교육이 또 나와 이렇게요 자 똑같은 게 똑같은 국민교육 헌장이 똑같이 1개의 문서 하나의 풀을 반복돼 문서를 이렇게 그러면 작성하는 게 좋아요. 아니면은 반복되는 부분 이런 걸 1번만 작성해 놓으면 되겠죠. 여러분 한 번만 작성해놓고, 문서를 작성하다가 필요하면 야 들어와 삽입만 하면 되겠죠. 또 콜 부르면 되겠죠. 하다가 또 콜 콜 하면 되겠죠. 이렇게 문서나 프로그램을 작성하는 게 낫나 요렇게 하는 게 낫나 빙시 아닌단은 이렇게 하는 게 낫겠죠.

화자 1
29:14
알겠나 그래서 여러분들 워드프로세스에서 많이 쓰이는 문장들 많은 사람이 문단 같은 1번만 작성해 놓고 어떤 문서를 하면서 필요한 걸 콜콜콜 마크로 호출하면 됩니다. 알겠나 우리가 워드프로세스 할 줄 알잖아. 아직까지도 이거가 타자기치나 어 워드플루스 알제 순자 순전 알제 마크로 선언하고 마크로 데려오는 거 아니지 됐습니까? 그래서 컴퓨터에서 이게 자주 반복되는 똑같은 부분을 뭐라 한다. 매크로를 합니다. 매크로 자주 반복되는 부분이 나오면은 이건 1번만 작성해 놓고 필요할 때 다 삽입하면 돼요. 그죠 요 단축도는 반복되는 부분이 매크로라 하구요. 매크로 MHR로 매크로를 하고 또 다른 말로는 프로그램에서 이걸 또 서브 프로그램이라 합니다. 부프로그램인데 부프로그램 요 인제 그런 거죠. 요 프로그램을 이제 메인 프로그램이라고 그죠 이 메인 프로그램에서 서브프레임을 부릅니다.

화자 1
30:07
부른다 캐서 콜링 호출 프로그램이라 하고 또는 이거는 불리워진다 캐가지고 콜드 프레임 콜드 CO에 콜드 프로그램이라 합니다. 같은 말이다. 콜드 프로그램이나 매크로나 서버 프레임이나 다 같은 말이죠. 알겠나 그러니까 자주 반복되는 부분은 1번만 딱 선언해 놓고 필요할 게 메인에서 필요할 때 와 와 이래 버리니까 훨씬 프로그램의 길이도 짧아지고 프로그램 또 단축이 되더라 이런 이야기들 그래서 이런 똑같은 개념인데 이 마크로의 종류도 2종류입니다. 서블 프레임의 종류도 폐쇄형이 있고 개방형이 있습니다. 그죠 폐쇄형은 고급 언어에서 많이 쓰지 현재 우리가 쓰는 씨 파스칼 고급 언어 배웠제 이거 고급 언어에서는 폐쇄형 마크로를 우린 서버 프레임이라 합니다. 고급 언어에서 이걸 서버 프레임이라 하고 메인 프로그램의 종속되는 프로그램 부 또는 종속 프레임이라 하죠.

화자 1
30:58
이거는 주 프로그램이라고 그런데 개방형은 뭐냐 저급 언어 즉 어셈블리나 기계어 주로 어셈블리에서는 즉 어셈블리 냉귀지에서 이걸 개방형 언어라 합니다. 개방형이라고 합니다. 개방형 언어로 하고 자 이 폐쇄형은 그죠 폐쇄 고급언어로 처리하면 일단 봐봐요. 주기억장치의 전략 효과 이렇게 하는 것보다 이렇게 하면 주기억장치 전략 효과가 발생하는 거야. 메인메모리 그래서 오늘날 여러분들 좋은 프로그램의 조건은 뭐고 에 시간과 공간 문제제 예 명령의 속도는 빠르게 처리되고 공간은 적게 사용되도록 그러니까 이렇게 프로그램 작성하는 것보다 이렇게 작성하니까 주기억장치가 적게 사용되더라 그리고 그럼 개방형에 비해서 수행 속도는 좀 떨어지고요. 주로 고급 언어에서 많은 쓰는 기법이 폐쇄형 서브 프레임이고요. 일단 알아놔라 뒤에 다 이야기합니다. 개방형은 뭐다 메인매물의 절약 효과는 없지만, 명령어 수행 속도는 빨라진다는 거죠.

화자 1
31:56
뭐에 비해서 여기에 비해서 그리고 주로 저급원을 즉 어셈블리 냉귀지에서 쓰는 기법이다. 이 말입니다. 알겠나 서브 프레임의 종류 2가지 입니다. 폐쇄형과 개방형 그죠 일단 봐놓고 직접 한번 보자 이 말입니다. 직접 한번 우리가 살펴보도록 하겠습니다. 예 뻑뻑하네요. 오늘 예 오늘 이게 지워지는 게 좀 뻑뻑하네요. 예 좋아요. 그죠 그래서 요거는 지금 다 들어놓으면 아주 좋습니다. 예 그래서 뭐 자 서브 프레임의 처리 기법과 마크로 처리 기법 보자 이 말이지 그러니까 자 이걸 만약에 서브 프레임을 하자 그러면 아까 요게 이제 저 저 부 프로그램입니다. 그죠 이 메모리에 메모리 메모리에 자 메모리에서 여러분들 자 메모리는 인제 명령어들이 수행이 됩니다. 수행이 돼요. 수행이 되겠죠. 수행이 되는데 100번지 150번지 쭉 하다가 인제 어 이놈이 필요합니다.

화자 1
32:54
이놈이 필요하면은 이제 코를 해서 불러들이면 되겠죠. 불러들이면 됩니다. 그러니까 이게 조금 그림이 잘못됐는데 상관없어요. 에 또 이렇게 수행하다가 어 인제 이런 불러들이면 되는데 메모리 구조를 보면 어떻게 되느냐 하면은 여기에 이게 메인 메인 메인 프로그램이 위에 들어가고 서버 프레임이 밑에 들어가요 그니까 메인 메모리 가면은 서버 프레임 1번만 있어 그리고 여기에 만약에 필요한 필요할 때는 부르면 부르면 막 들어갑니다. 막 들어가 그러니까 서버프레임은 뭐야? 여기 뭘 보여주냐 주기억장치가 서브 프레임을 위해서 1번만 할당하면 돼 메모리가 100에서 250번지만 있으면 됩니다. 여기에 반해서 이제 마크로는 어떻게 되느냐 하면은 이 반복되는 부분을 한번 써놓고 이제 여기에 다쳐 보여요. 다 삽입을 하면 어떻게 되느냐 하면은 부를 때마다 다 들어갑니다. 이게 메모리 구조를 보면 또 여 들어가고 또 쭉 하다가 여기에 들어가고 쭉 이렇게 들어가 봐요. 개방적인 이게 개방형이에요.

화자 1
33:54
이거는 뭐다 폐쇄형입니다. 매 메모리 서버가 폐쇄예요. 폐쇄 200번이라는 경계 주소에 의해서 완전히 메인과 서버가 나눠져 가지고 메인에서 부를 때 들어가면 되는 거예요. 그러니까 메모리가 어 절약이 되는 비에 이 마크로는요 다 삽입이 되기 때문에 다 삽입이기 때문에 메모리 절약 효과는 없습니다. 그렇지만 수행 속도는 빠릅니다. 쫙 수행하면 되니까요? 근데 이게 서브 프레임은 들어갔다 나왔다. 들어갔다 나와야 되기 때문에 메모리의 절약 효과는 일어나지만 수행 속도는 떨어진다는 그런 이야기거든. 이해되나 해서 그렇게 중요한 건 아닌데요. 여러분 약간 암기하는 것보다 역시 이런 개념을 알아놔라는 거제 이해되나 에 그래서 이왕 마크로가 나왔으니까 서버 프레임 하고 서버 프레임은 주로 고급원에서 처리하는 기법이고 어셈블리는 뭐예요? 이거 마크로 반복되는 부분을 매크로 선언하고 이놈의 메인에다가 다 집어넣는 개념 되니까. 메모리 구조를 보면은 이렇게 된다는 거야. 그러니까 메모리 절약 효과는 없지만, 들어갔다 나왔다.

화자 1
34:52
하는 게 없으니까 바로 수행을 하고 명령어 수행 속도는 빠르고 즉 프로그램의 수행 속도는 빠르지만 메모리에 전략 효과는 없고 이 서버 프로그램은 뭐다 메모리 전략 효과는 있지만 들어갔다 나왔다. 들어갔다 나왔다. 해야 되니까. 어떻다 수행 속도를 넣는 거죠. 그죠 그러니까 150번지에서 콜했다 하면 거기 들어가는 거예요. 150번지 다시 또 들을 나오고요. 에 그러니까 메인과 서버가 완전히 나눠져서 매물이 들어가는 구조다 이렇게 얘기하면 되겠죠. 그래서 그렇게 중요한 건 아닙니다. 옛날엔 상당히 중요했지만, 요즘은 출제가 여기까지는 죽어도 안 나온다 그렇지만 내가 왜 그냥 암기시키는 것보다 뭐 직접 여러분한테 보여주고 싶어서 하는 겁니다. 그죠 그래서 요즘 정보 처리가 원래는 이 정도 한 이 정도 선에서 이런 것까지도 다 물어줘야 되는데요. 요즘 출제자들은 자기네들이 모릅니다. 이런 거 예 옛날 이야기가 됐지만 이왕 재개최의 제자들은요, 아 알고 암기하자 그 말이 돼 그래서 혹시 이해가 안되면 넘어가도 좋습니다.

화자 1
35:50
자 다음 넘어가죠 자 어쨌든지 매크로셈블리언은 뭡니까? 자 마크로 부죠 반복되는 부분 마크 로브가 포함된 어셈블리 맹귀지로 작성된 소스 프레임이 있어요. 그죠 그러니까 작성을 해보니까 이렇다 이 말이에요. 자 이 마크로 반복되는 부분이 있습니다. 그러면은 어셈블리에서는 이 마크 로브를 따로 만들지 이 마크 로브라카제 그리고 여기에 메인 프레임 들어가요 메인 프레임 메인이 드가 메인부가 들어갑니다. 그리고 공통되는 부분이 필요하면은 여기도 부르죠 콜 근데 요 이름이 마크로브의 이름이 JJH다 카면은 JJH 또 J 필요할 때마다 필요할 때 JH 부르면 요놈이 들어와요. 이렇게 요렇게 들어옵니다. 무슨 말인지 알겠나 그래서 프로그램 작성 즉 마크로브가 포함된 어셈블리 랭귀주를 작성된 소스 프레임은 뭐로 마크로 어셈블러가 먼저 마크로 불을 처리를 해줘야 됩니다. 즉 뭐 요놈을 전부 다 집어넣어줘야 됩니다.

화자 1
36:42
알겠나 마크로 어셈블리라는 시스템 프로그램이 처리를 해가지고 집어 들어간 이 공통된 부분이 제자리에 찾아 들어간 즉 확장된 어셈블링 연기저 소스 프레임이 나오면은 그걸 앞에서 배운 어셈블러가 다시 투 패스해 가지고 머신 랭귀지로 된 목적 프레임이 만들어지는 겁니다. 이해되나 이제 요것만 아니면 되는 거예요. 에 자 뭔 말인지 이해되나 그래서 이런 공통 부분이 있는 어셈블 냉전으로 된 거는 뭐냐 마크로 어셈블러가 어셈블러가 처리하기 전에 처리해 줘야 됩니다. 그래서 마크로 어셈블리를 어셈블리 전에 처리한다. 캐 가지고 프리 프라세스 전 처리기다 이렇게 합니다. 또 다른 말로 마크 로브를 처리한다. 캐 가지고 마크로 프라세스라 이렇게 이야기합니다. 자 마크로 어셈블러 마크로 프라세스 전체력이 다 같은 말이다잉 같은 말이다. 왜 전체력이고 오케이 어셈블러가 처리하기 전에 처리한다. 해 가지고 어셈블러의 프리프라세스 전체력이다.

화자 1
37:40
이렇게 이야기하고 또 마크로브 마크 로셈블리어를 마크로 물을 처리한다. 해 가지고 마크로 프로세스다 이래 이야기합니다. 실제 마크로 프로세스라 합니다. 그죠 그래서 요렇게 작성되어 있는 거 마크 로브가 포함된 이 프로그램이 이래 있으면은 요렇게 되는 거예요. 그죠 자 그러면 여기서 시험 나오는 건 뭐야? 마크로 어셈블리가 어떻게 번역하느냐 이 마크로 어셈블리도 뭐다 투 패스 1번 만에 다 뭐 하고 이걸 1번 번역하고 2번 만에 완성을 확장시켜요 어 자 여러분 요걸 그려야 되겠죠. 요걸 자 뭐야? 다 요거 그려줄까 다시 한번 자 어셈블 연결 작성하다 보니까 공통되는 부분이 있어 그럼 공통된 부분을 먼저 선언하고 여기에 쓰는 게 좋겠어요. 요 그림이 빠져버렸네, 그러니까 이해가 되고 좀 떨어지겠다.

화자 1
38:30
예 잘 나옵니까 예 자 요거 한번 보자 자 프로그램을 작성하다보니까 공통된 부분이 있어 이 공통된 부분이 뭐다 매크로보다 매크로 매크로브입니다. 그럼 요걸 제일 먼저 작성하여 어 그리고 이제 메인 프레임을 이렇게 작성했죠. 이거요 이 메인이죠. 메인부입니다. 그러면 요건 뭐다 마크 로브가 포함된 어셈블리 랭귀지로 작성된 프로그램 소수 프레임이겠죠. 요런 작성을 하죠. 프로그램을 작성하다가 아 요 부분이 필요해 그럼 요 부분에 이름 만약 이 프로그램 이름을 JJH라 하면은 JJH 이름만 써주면 됩니다. 이 프로그램의 이름을 그리고 또 늘어가 또 요 부분이 필요해 그러면 또 JJH 해 주면 돼 그걸 또 늘어가 또 필요하다고 하면 제이제이 에이치 해주면 됩니다. 요렇게 프로그램 작성 요런 프로그램은 뭐냐 마크 로브가 포함된 어셈블러 연결 작성된 소스프로그램입니다. 요런 게 요런 거는 뭐다 어셈블러가 바로 번역을 못하고 누가 마크로 어셈블러가 번역하기 전에 미리 처리해 줘야 됩니다. 알려나 어떻게 처리한다. 요 부분을 여기에 다 집어넣어줘야 돼요.

화자 1
39:29
누가 집어넣어주나 누가 요 집어넣어주나 마크로 어셈블레이를 집어넣어줍니다. 집어넣어주는 것도 1번만에 집어 못 여주고 어떻게 집어넣어준다. 1번 2번 만에 집어넣어주기 때문에 툭 패스 다 이 말입니다. 되나 첫 번째 과정에서 첫 번째 작업 첫 번째 작업에서 첫 번째 번역에서 뭐하냐? 요만 마크로 정의를 인식합니다. 아 요런 마크 로브가 있구나 첫 번째 번역을 하면서 아 요게 마크로브네 요거 인식을 가지고요. 아 마크 로브가 1 2에까지 인식하고 그다음에 아 요 공통된 부분을 나중에 서먹기 위해서 저장해야 되겠다. 공통된 부분을 정의를 저장합니다. 인식 저장이제 여기 첫 번째 과정에서 해요. 아 마크로브가 있네 그럼 요거 저장해 놔야 되겠다. 첫 번째 과정 두 번째 과정에서 뭡니까? 아 마크로 코를 인식 아 여기서 불렀네 여기서 불렀네 코를 인식합니다. 되겠나 그리고 불렀던 데 최종 뭐다 마크 로브를 저장했던 마크 로브를 삽입시킵니다. 삽입 내지는 확장이죠.

화자 1
40:24
요런 일을 하는 게 누구다 마크로 어셈블러다 다른 말로 마크로 프로세스다 다른 말로 어셈블러의 프리 프로세스다 됐나 요 이야기가 시험에 나오는 겁니다. 자 암기하지 마라 이 말이제 암기하지 마라 이 말이지 되겠나 시험에 어떻게 해요. 마크로 어셈블리의 첫 번째 패스를 바르게 설명한 거 뭐 마크로 정의 인식 마크로 정의를 저장 암기하는 것보다 요렇게 그죠 아 첫 번째 번역 하면서 오 마크로 부가 있네 그리고 아 마크로 나중에 선물이 저장해야 되겠네 첫 번째 행위 두 번째 과정에서 어디서 불렀노 여기서 불렀네 여기서 불렀네 여기서 불렀네 그럼 거기 집어넣어야지 집어넣는 게 뭐다 두 번째 과정입니다. 됐나 됐죠 암기할 필요 없다. 이 말입니다. 좋습니다. 그래서 여러분들 이런 이야기들 예 좋고요. 자 이렇게 어셈블러와 마크로 으셈블러 정리됐고 좋아요. 자 그다음 한번 가볼까요?

화자 1
41:18
자 노드와 링크는 딱 하나만 공부하면 돼 노드 예 봅시다 여러분 저 방금 봤는 게 뭡니까? 어셈블와 마크 어셈블러 즉 이 소스 프로그램을 번역에서 목적 프로그램 만들어주는 언어번역 즉 중급언어 어셈블 랭귀지의 언어 번역 프로그램이었죠. 그러면 이런 이 언어번역 프로그램이 자 이 소설 프레임이에요. 소설 프로그램 있죠. 이 소설 프로그램 누가 번역해주는 트랜스레이터 번역기죠 언어번역기 또 번역풀 같은 말입니다. 번역 소프트웨어가 번역을 하고 그럼 뭐가 나오노 1과 0으로 구성된 예 이게 좀 지저분하네요. 오늘은 1과 0으로 구성된 예 멋있는 연결로 구성된 목적 프로그램이 나오지 다 알자인 거다 그래서 바 배웠습니다. 근데 요런 일과형으로 구성된 이 목적 프로그램을 컴퓨터가 실행은 아직 모호합니다. 왜 4가지 문제가 해결 안 됐기 때문에 고 4가지 문제를 해결해 주는 시스템 플레이 뭐다 노드입니다. 노드 이 노드를 배워보자 이 말이죠.

화자 1
42:16
노드가 이제 이 4가지 문제 4가지 작업을 수행을 해야만이 4가지 작업을 수행해야만이 뭐가 된다. 비로소 컴퓨터가 무리 없이 이 프로그램을 엑시큐트블 합니다. 저 수행합니다. 알겠나 이 과정이죠. 여러분들 일괄형으로만 돼 있다. 캐 가지고 컴퓨터가 일을 하는 거 아니지 우리가 작성한 소스 프로그램을 언어 번역 프로그램이 번역을 해 가지고 일과용으로 구성된 목적 프로그램을 만들고요. 이 목적 프로그램을 노드가 4가지 작업을 해 가지고 뭐다 실행 가능한 비로소 실행프로그램 실행 파일을 만들어냅니다. 됐나요? 됐어요. 자 그러면 이 4가지 작업이 뭐냐 이 말이에요.

화자 1
43:02
4가지 작업이 아주 쉽다 자 왜 하나 올로케이션 할당작업 할당작업 링킹 연결작업 AR 그다음에 리로케이션 메모리 재배치 작업 그 다음에 로딩 적재작업 됐죠 여러 가지 작업이 뭐다 올 로케이션 에이 할당작업 연결 링킹 작업 어 메모리의 주소를 새로 배치시키는 리로케이션 재배치 작업 실제 노드 시키는 로딩 작업 ARL입니다. RL ARL 에 알겠나 그럼 할당 작업이 뭐야? 할당 할당작업 이 목적 프로그램을 실제 프로그램이 수행되려고 하면 주기억장치에 로드돼야 되겠죠. 그럼 주기억장치에 뭐야? 올릴 수 있도록 메모리를 공간 확보 공간을 확보 이 프로그램이 주기억장치 올라갈 수 있도록 어 공간을 잡아놓는 겁니다. 그죠 공간을 잡아놓는 거야. 이 공간을 확보하는 작업이 뭐다 할당자금 OLOCATION 실제 공간 잡아놓는 거예요.

화자 1
43:56
어 이 들어갈 놈을 그리고 링킹 작업은 뭐냐 하면은 명령어간 주소 연결입니다. 주소연결 이게 뭔 말이냐 자 오늘날 명령어들은 일단 1과형으로 목적 프레임 다 바뀌었죠. 바뀌었죠. 그럼 이게 이제 명령어가 100이고 이게 101이면요 102 103 아 이게 뭐 108이랍시다 이게 연결이 안 됐어요. 연결이 돼야만이 컴퓨터가 요놈 수행하고 요놈 수행하고 요놈 수행하고 수행을 하죠. 이렇게 주소 간의 연결을 하는 작업이 뭐다 링칭 작업입니다. 즉 주소적 연결작업입니다. 됐나 어 그리고 또 뭐 또 프로그램이 메인과 서브 떨어져 있더라도 연결해 줘야 되겠죠. 이렇게 연결해 주는 주소를 연결해주는 게 뭐다 링킹이야 되겠나 싶다. 그리고 메모리 재배치 메모리에 새로운 주소를 부여하는 거예요. 그죠 예를 들면 이 명령으로 100번지인데 명령문은 100번지에 메모리는 여기 0번지부터 뭐 어 99번지 들어있다면 이게 뭐야? 안 맞죠.

화자 1
44:54
백이 역묘지에 몬득하니까 누군가와 뭐 이걸 백에서 108로 뭐 여기 200이라 합시다. 200으로 주소를 새로 조정해 줘야 되겠죠. 매핑 시켜 줘야 되겠죠. 이래 주소를 새로 제공시키는 작업이 맞나 리히 로케이션이지 맞나 문화식당 메모리 재배치 메모리 새로운 주소 부여해서 프로그램의 주소와 즉 주소 프로그램의 주소가 뭐다 논리적 주소죠 논리적 주소와 물리적 주소를 일치시켜 줘야 되겠죠. 그죠 이 일치시켜준 행위를 매핑이라고 일치시켜주기 위해서 메모리 주소를 새로 부여하는 게 뭐다 메모리 리로케이션 강의 끝내준다. 이거 진짜 어려운 거예요. 쉽죠 이렇게 알아 놓으면은 어떤 문제 나와도 많이 추가하십시오.

화자 1
45:38
메모리 주소를 새로 부여를 해줘 왜 부여해주나 프로그램의 논리적 주소와 즉 100에서 200을 물 기업 공간의 물리적 주소 여기에서 99 되는 안 맞으니까 이걸 누군가가 주소를 새로 배치해줘요 이걸 이 로케이션이고 여기 연결하는 건 뭐고 매핑이고 되겠나 이미 버처의 메모리에서 환상적으로 정리했잖아요. 아 좋아요. 그리고 이제 다 됐어 에 자 공간 확보도 했고 주소 연결도 됐고 주소 이게 어 어 주소 재배치 작업도 끝났으니까 인제 이놈을 가져오면 되겠죠. 이 목적 프레임을 로딩 로딩 적재시킵니다. 되겠나 요 4가지 작업해주는 거 올 로케이션 링킹 리로케이션 로케이션 노딩 이 4가지 작업해 주는 시스템 소프트웨어가 뭐라고요. 노드 적재기입니다. 됐나 이런 적재기 때문에 우리가 작성한 프로그램 작성한 내용은 컴퓨터가 실행 처리합니다. 됐죠 좋습니다.

화자 1
46:35
4가지 작업만 아시면 되겠고 노드의 종류는요 눈으로 이거 중요한 것 아니다. 컴파일렌 고노드 번역 프로그램과 동시에 수행해버리는 거 절대 노드는 뭐다 적재 4가지 작업 중에서 적재 기능만 하는 게 절대 노드고요. 직접 연결 노드는 뭡니까? 가장 이 4가지 기능을 다 합니다. 일반적인 노드가 다이렉트 링킹 노드고 눈으로 더 많아라 그냥 동적 적재 노드는 뭐냐 하면은 프로그램 실행 시 필요한 일부분만을 적재하는 노드예요. 그죠 적재 기능만 가지고 있는 거죠. 그죠 4가지 기능을 다 아는 FMFM 노드가 뭐다 직접 다이렉트 링킹 노드다 이 말입니다. 그죠 되겠나 그래서 요런 4가지 노드가 있고 여러분 그냥 눈으로 컴파일 앤 고노드는 다시 뭐 한다. 번역과 동시에 로드 기능까지 하는 거고요. 절대노드 4가지 작업 중에 뭐다 노드 기능만 하는 거고요. 자 이렇게 윙킹노드가 4가지 작업을 수행하는 일반적인 노드고요.

화자 1
47:26
동적 적재 노드는 프로그램 실행 시에 필요한 부분만 적재시키는 노드가 동적 적재노드 다이나믹 노드다 이 말 됐죠 그래서 어떤 문제 나와도 이 정도만 가지고 있으면은 이 정도만 가지고 있으면은 문제가 없더라 이 말이에요. 강의 진짜 쉽죠 여러분 이거 실제적으로 잘못 들으면 굉장히 어려운 파트다 해서 어 그렇죠. 암기해야 할 필요가 하나도 없더라 이 말입니다. 그죠 그래서 여러분이 봤고 자 이제 마지막으로, 이제 컴파일러를 한번 보자 이거는 뭐 할 것 없어요. 실제로 내가 복잡하게 해놨는데 다 필요없다. 예 한번 눈으로 보면 되고 컴파일러는 여러분 뭐고 그렇죠. 아까 어셈블려나 마크로 으셈블려는 뭐 중급 언어 어셈블리 랭기주로 된 소스 프로그램을 번역해 주는 번역기가 번역 소프트웨어가 뭡니까?

화자 1
48:14
어셈블루와 마크 로셈블루고 이 컴파일러와 인터폴리오 뭐 그렇지 공급 언어로 어 바로 비주얼 베이직시 코벌 포트라는 이런 고급원으로 작성된 소스 프로그램을 번역해서 목적 프로그램을 만들어내는 트랜슬레이트가 뭐야? 컴파일러와 인터프리트가 있다. 했겠지 그지 그래서 컴파일러와 인터프리 차이점은 컴파일러는 번역 방식이고 번역 인터프리트는 무슨 방식입니까? 통역방식입니다. 몇 분 남았죠 지금 50분이에요. 아 좋아요. 아주 좋습니다. 그래서 여기 차이점 잘 알겠죠. 내가 아까 우리가 예 지난 시간에 이야기했죠. 그죠 번역과 통역의 차이점 그렇죠. 그래서 인제 뭐야? 컴파일 언어는 자 여러분 잘 봅니다. 자 이거 다시 해야 되나 자 앞 시간에도 했지만, 예를 들면 내가 이런 거요 키 큰 미국 사람이라 했죠.

화자 1
49:12
키 큰 미국 사람 그다음에 키 작은 우리 한국 사람이 한국 사람 그 내가 미국 사람한테 일을 3가지를 시키고 싶다. 하나는 물돈 하나는 등을 예를 들면은 뭐야? 맥주 사온다 하나는 라면끼리라 요런 일을 시키고 싶습니다. 그러면은 요 3가지를 시키고 싶은데 방법은 2가지가 있습니다. 그죠 통역방식과 뭐가 있나 즉 인터프리트 통역방식과 컴파이저 번역 방식이 있어 통역 방식과 통역과 뭐가 있다. 번역이 있거든. 통역 방식이 있으면 중간에 이제요 우리나라 말도 알고 앞 시간 했는 건데 다시 한번 내가 해줄게 우리나라 말도 알고 우리나라 말도 알고 미국말도 알 수 있는 이런 사람이 있어야 되겠죠. 이 사람한테 익혀요 말로 합니다. 야 물 좀 떠 온라 캐라 자한테 이카면은 야가 야 바라봐라 저 사람이 얘한테 물 좀 떠온다 카더라 하면 알았다가 물 딱 떠줍니다.

화자 1
50:10
그래서 이게 인터폴리도 냄겨지는 전부 엔트 딱 붙입니다. 엔트 엔트 그러면 인제 그다음에 물 딱 또 오면요 야 그다음에 맥주 좀 사온라 카더라 그럼 맥주 사옵니다. 맥주 사오면 야 라면 끓여라 이렇게 합니다. 그런데 번역 방식은 어떻다 이거 한꺼번에 종이로 써요 물 떠온나 물 가져온나 기미 와라 두 번째 뭐 맥주 가져와 김해라 라면끼리랑 딱 써가지고 이 사람한테 종이를 딱 보여 종이로 보여주면은 이 사람이 종이를 보고 야한테 종이를 딱 줍니다. 그럼 야는 종이를 보고 3가지 일을 동시에 딱 해버립니다. 되겠나 그러다보니까 컴파일러가 컴파일러와 인터폴의 차이점 뭡니까? 인터프리트 언어 명령어 수행 속도 전체 수행 속도는 컴파일러가 빨라요. 꼭 안 쓴다 인터플에 넣습니다. 이 3가지 수행하는데 그렇죠. 자 그리고 목적 프로그램 즉 종이가 번역은 뭡니까? 종이종이 즉 목적 프로그램 생성됩니다. 목적 프로그램 종이가 있고 통역은 종이가 없어요. 그래서 목적 프로그램 생성되지 않아요. 이해되나 자 다시 이야기한다.

화자 1
51:10
컴파이어는 목적 프로그램이 생성됩니다. 목적 프레임 종이가 생긴단 말이야. 어 영어로 번역했는 게 생기고 통역은 목적 프로그램이 생성되지 않아요. 대체 그리고 수행 속도는 컴파일러가 빠르고요. 수행 속도가 더 늦습니다. 인터프리트가 됐죠 예 요런 차이점이 있단 말이야. 그래서 보통 이제 아 그런데 이제 인터프린트를 좀 놔두고요. 컴파일러가 어떻게 보통 전체 번역하는 데 5에서 6단계에 걸쳐서 번역을 합니다. 그리고 또 컴파일러마다 약간 달라요. 어 컴파일러 여러분들 베이직도 GW 베이직 뭐 퀵베이직 전부 다 컴파일러 이름이죠. 시도 터보시 볼란드 씨 COVOL독 이런 거 처음 듣지 RN COVOL NC COVOL MS COVAL 전부 컴파일러 이름인데 약간 다르지만 보통 이번에는 우리 소스 프로그램을 번역하는데 한 5~6단계 거치더라 그 단계가 뭐냐 이 시험이 나옵니다. 그죠 다른 게 할 필요 없고 처음에 이 소스 프로그램을 입력을 받았어요. 어휘 분석을 합니다.

화자 1
52:10
이게 어휘 분석 단계 어휘 분석 단계 몰라도 좋습니다. 어휘 분석을 하고 난 뒤에는 그다음에 신텍사 분석 즉 구분분석입니다. 구분분석 구조분석이에요. 그리고는 중앙코드 중간 코드 생성을 합니다. 중앙 코드 생성을 하고 세 번째 이 코드를 이제 요즘 화살표 쳐라 OTMI 최적화를 합니다. 제적을 하고 난 뒤에 코드를 즉 코드 가능이 뭡니까? 1과 0을 제너레이션 발생시키면 최종 목적 프로그램이 생성됩니다. 자 됐나 요것만 아니면 돼요. 컴파이어는 제일 먼저 하는 게 뭐다 소스 프로그램을 입력받아서 컴파일러는 처음에 어휘 분석을 하더라 그리고 중간 코드를 생성시키고 난 뒤에 코드 최적화하더라 최적화한 코드를 가지고 최종 일관형 즉 일관형으로 제너레이션 발생시키고 이놈들을 모아서 목적 프로그램이 탄생되더라 됐나 요 2가지는 기계화 독립적이다. 요 위에 두 가지 기계하고 관계없고요. 밑에 4단계는 3단계는 기계한테 영향을 좀 받더라 이 말입니다.

화자 1
53:07
되겠나 2단계는 기계와 독립적이고 밑에 3~4단계는 기계와 종속적이더라 기계의 영향 즉 컴퓨터 기종마다 약간씩 좀 다르더라 이 말입니다. 됐어요. 요것만 알면 되고요. 이 각각은 여러분들이 몰라도 옛날에는 강의를 다 했는데 잠깐 보면 어휘 분석 단계에서는 토큰을 생성해야 됩니다. 토큰 우리 자동차 탈 수 있는 토큰요 의미있는 거 토큰 생성 시험에 옛날엔 이런 게 나왔지만 요즘은 안 나온다고 보면 된다. 그리고 구분 분석에서는 이제 자 의분석에서 토큰 센스 요것만 알면 되고 부분 분석해서는 뭡니까? 파스추리 생스 혹시 눈에 많아요. 시험 나올 수도 있으니까 그리고 코드 최적화는 뭐야? 시간과 공간은 문제를 해결해 주는 거죠. 소프트웨어에서 가장 중요한 게 뭐다 시간 시간은 빠르게 공간은 적게 차지하도록 요 문제를 해결해 주는 단계가 뭐다 코드 최적화 오토마이저 단계고 되겠나 그리고는 최종 기계 언어로 만들어냅니다. 자 어려운 거 없다. 그래서 여러분들 복잡하면 이건 안 봐도 좋아요.

화자 1
54:00
근데 옛날에는 몇 년 전만 해도 이런 과정이 시험에 나왔는데 요즘 정보처리 기사가 어디 기사가 감염할 수 없이 있기 때문에 컴파일의 단계만 눈으로 봐놓다잉 자 고급 언어로 작성되죠. 고급 랭귀지로 작성된 소스 프로그램에 들어가면은 컴파이어는 뭡니까? 어휘 분석하고 구문 분석하고요. 중앙코드 생성하고 코드를 최적화시키고 난 뒤에 1과 0을 발생시키고 난 뒤에 이름을 모아서 최종 목적 프레임이 만들어지더라 이것만 알면 되고 2단계는 기계와 독립적이고 4단계는 기계와 종속적인 기계에 따라서 조금 영향을 받더라 이런 이야기입니다. 강의 잘했제 여러분 실은 우리 전산과에서 이 컴파일러가 요거 요게 한 학기 과목이다. 보통 대학 4학년 과정에 전공 필수로 합니다. 컴파일러 여러분들 요것만 딱 가지고 요것만 딱 정리하면요 3학점 땄어요. 그래서 전산과 학생들 내 강의 들어버립니다. 지적해버립니다.

화자 1
54:54
여러분 여러분들은 공무원 가산점 뭐 취업하지만 이 전공자의 명강이 들어보면 나이 나쁜 대학교 지금 환불 살 때 다 벌어져 버려요 이게 다 3학점 다 내가 다 정리하라는 거예요. 그래서 여러분 참 안타깝습니다. 컴팔령 아까 배운 어셈블러 막 이거 1과목이야 그리고 어셈블링 넘기지는 1년 동안 배웁니다. 전산과에서 여러분들은 오늘 1시간 앞 시간 1시간 2시간 만에 대학에서 배워서 학점 한 15학점 나왔답니다. 그니까 대학 강의가 개판이야 개판 나한테 1시간 강의 들었는 게 뭐 대학 1년 내내 배운 것보다 모호한데 그게 더 모호한데 뭐 그래서 여러분 대학이요. 지금 엉망입니다. 예 저도 대학의 교수 있습니다마는 이런 소리 하면 총장님하고 되게 싫어하거든. 그리고 하여튼 내 목에 칼로대로 할 말은 해야지 내가 뭐가 겁이 나 가지고 어 정말 안타까워요 이 대학이요. 특히 전산고 같은 경우는요 예 전산과 졸업해도 프로그램 못 잡니다. 우리 IT 이런 회사에 못 들어옵니다. 그래서 경력자가 필요한 거예요. 왜 이놈의 데려와요.

화자 1
55:52
아무것도 모르는데 뭐 월급 주고 일 시켜 그러면 다 가르켜야 되는데 뭐 여러분들 그럼 대학 교수님들이 프로그램을 못 짜요 짧으면 자기네들 다 이 사이트 만나서 대박 나지 아 근데 뭐 큰일 났어요. 그리고 공부를 안 해요. 공부를 대면 문화 때문에 예 우리나라는 여러분들 참고로 여러분 이렇게 되면 안 돼 우리나라를 망치는 게 여러분 대미 문화다 대면 내가 말이 아니고 어떤 사회학자가 이야기하더라고. 이 대면 문화가 뭐냐 하면요 우리나라 사람들은 되는 게 최고야 내가 의사 되는 게 최고고 교수 되는 게 최고고 어 되는데 되기 위해서 열심히 합니다. 어 판검사 되기 위해서요. 어 사법고시 패스하고 잠도 안 잔다니까 2시간 3시간 자고요. 암기하다 암기 안되면 그 육법조사 뜯어가 묵어버린다니까 그 정도면 열심히 해 되고 난 뒤에는 절대로 공부합니다. 밥마다 술 마시고 막 공부합니다.

화자 1
56:43
의사 되기 전까지는 열심히 의사 딱 돼버렸는데 공부 안 해 그리고 수술해라 카이 뭐 알아야 수술하지 배째해 가지고 가위비 집어 뿌리고 막 그러고는 아 뭐 의료 사고다 카고 영 의사들 클납니디 나 내 주위에 의사가 많아서 내가 잘한다. 공부를 안 해요. 어 대통령 되고 국회의원 되기 위해서는요 막 시장에 가서 막 할매도 업고 막 업고 댕기다가 대통령 돼버리고 뭐 국회의원 돼 뿌면 안 나옵니다. 청와대에서 어 쓸데없는 타고 댕기고 되는 게 중요합니다. 우리나라 대면 문화가 만들 교수들도 대구 나한테 열심히 연구하고 해야 되는데 공부합니다. 그럼 만날 강의 6.25 때 했던 거 70년대 가지고 그거 가지고 어 이거 지금 시대가 2010년에 강의하고 말이야. 어 큰일 났어요. 이게 우리나라는 망가뜨리는 거예요. 근데 외국에 가보면 선진국은 되는 게 중요하지 않아 뭐 퍼달려 드릴라 너 지금 뭐 하느냐 내가 청소부도 좋고 내가 판사부도 좋고 현재 내가 하는 데 가치를 주는 거야. 행위의 문화 그죠 우리나라는 되는 거야.

화자 1
57:39
여러분 정무처리 기사되기 전에 열심히 기사 돼 보면 만약에 기사실에 밥만 먹고 이러면 안 된다. 이 말이야. 공무원 되기 위해서 열심히 한다. 공무원 되고 난 뒤에 만나지 말고 그럼 되나 안되나 입니다. 대미 문화는 사람을 망가뜨립니다. 아시겠습니까? 그래서 요거 오늘의 교훈 대면 문화 이거 여러분 6.25 때 6.25 때 아주 발상입니다. 그죠 어 되고 난 뒤에 더 열심히 해야 됩니다. 국회의원 되고 난 뒤에 더 험한 일을 해야 되구요. 대통령이 되고 난 뒤에 더 애절하게 어 국가를 위해서 몸을 던지고 목숨을 다해야 돼 맞나 맞나 박수 한번 쳐라 멋진 이야기 맞다. 살아와 내 말이 맞지 그래서 근데 무슨 이야기를 됐노 시간이 좀 있네 그래서 여러분들 요렇게 정리하시면 됩니다. 그렇죠. 그래서 요정도 정리하면 어떤 문제에 나와도 맞춥니다. 됐나 이왕 하는 거 암기하지 마라는 거죠. 자 오늘 정리 이제 시원하게 되었죠. 그죠 자 되었습니다. 되었고 자 10분 쉬다가 잠시 쉬다가 돌아오겠습니다.

화자 1
58:39
돌아온 장고 10분위를 기대하시면서 어 잠시 뒤에 만나 뵙겠습니다.

728x90
반응형
posted by 아이윤맨
: