반응형
SMALL

Computer Science 91

[컴개/CI] IR Translation to 3-addr code

HIR to LIR HIR는 상위 언어, 혹은 AST 등으로 생각할 수 있는데, 이러한 HIR을 LIR 즉, 3-addr code와 같은 형태로 바꿀 때 nested 구조(while, if, etc)로 인해 필연적으로 한 줄의 HIR코드는 여러 줄의 LIR 코드로 바뀐다. 여러 줄로 바뀌는 과정에서 임시 변수를 정의하고 임시 변수를 가져다 쓰는 형태로 바뀐다. 이때, 여러 줄로 바뀌는 규칙이 존재한다. Notation [[ e ]] HIR e에 대한 LIR expression. 즉, e는 하이레벨 코드가 하나 이상 섞인 HIR이며, [[]]에 들어가게 되면 LIR expr로 나오게 된다. 주로 sequence of LIR instruction이다. t = [[ e ]] e가 표현식일 때, 결과 값을 t에..

[컴개/CI] 3-address code: 예제 2

각각의 예를 분류하면 아래와 같다. - 3-addr code: GCC GIMPLE, LLVM - Stack machine code: JVM byte code, MSIL - Tree code: GCC RTL 가상 기계 코드 (Bytecode, MSIL) 컴파일러는 전반부와 후반부로 나뉘는데, 전반부가 끝나면 IR이 등장하고, IR은 후반부를 거쳐서 target machine code로 변환된다. 전반부는 주로 High-level 언어만 관련이 있고, 후반부는 주로 머신코드와 관계가 되어있으므로 IR을 잘 정의 해야 한다. 전반부와 후반부로 나눠놓고, 후반부를 interpreter로 만드는 경우가 있다. 후반부를 interpreter로 만들면 후반부 자체가 가짜 기계가 되고, 중간코드는 interpreter..

[컴개/CI] 3-address code: 예제 1

각각의 예를 분류하면 아래와 같다. - 3-addr code: GCC GIMPLE, LLVM - Stack machine code: JVM byte code, MSIL - Tree code: GCC RTL 예1) GCC의 GIMPLE GCC는 c 언어의 컴파일러로 최소 3개의 중간 코드가 존재한다. 중간 코드로는 GENERIC, GIMPLE, RTL이 있다. 이러한 GCC 컴파일러는 c언어 뿐만 아니라, c++, Objective C, Ada까지 입력으로 받을 수 있으며, target 코드의 종류도 여러 가지이다. GCC는 사실 컴파일러라기 보다 Compiler Generation Framework이라고 부르는 것이 더 정확하며, GCC에서 c 컴파일러를 찾기 위해서는 폴더를 타고 들어가야 한다. GEN..

[컴개/CI] Intermediate Representation(IR)

Intermediate Representation(IR) IR은 위 사진에서의 단계 중 중간 코드를 의미한다. 전체적인 컴파일 과정은 High-level 언어에서 Low-level 언어로 만들어주는 과정인데, 이 과정에서 High-level 언어보다는 low하고, Low-level 언어보다 high한 언어로 만들어주는 단계를 거치게 된다. 이러한 IR은 언어와 기계에 독립적이며 컴파일러 내부적으로 사용하는 경우가 가장 많다. IR은 instruction list의 형태와 같은데, 기계어 코드와 같은 list 형태가 가장 많다. 또한 tree 형태로도 존재한다. 이러한 instruction(node)의 종류가 적을 수록 최적화나 번역에 좋다. Java, C, C++과 같은 High-level 언어를 받아서..

[컴개/CI] AST

Parse Tree 파스트리는 유도 과정을 트리로 나타낸 것이다. leaf node는 terminal, 중간 노드는 non-terminal을 의미하고, 좌측유도인지, 우측유도인지는 표현이 되지 않는다. 위의 파스트리는 유도를 나타내기 위한 불필요한 부분이 존재한다. 트리 자체로 우선 순위를 나타낼 수 있으므로 괄호 또한 불필요하다. AST(Abstract Syntax Tree) 이때, 위의 파스트리에서 불필요한 부분을 모두 삭제한 것을 AST라고 한다. 다양한 언어로 위와 같은 AST 형태를 나타낼 수 있다. 위는 자바 코드로 작성한 AST 자료구조이다. Add와 Num 모두 Expr 클래스를 상속하고 있으므로 인자를 받을 때 Num인지, Add인지 구분할 필요가 없다. 그러나 각 클래스에 따라 자식으로..

[컴개/CI] SDD(Syntax Directed Definition)

Semantic Analysis 우리는 지금까지 어휘 분석과 구문 분석의 방법에 대해 학습했다. 이제 그 다음 단계인 의미 분석에 대해 학습해야 하는데, 구문 분석한 결과인 parsing tree를 통해 바로 의미를 분석하는 것일까? 사실 파싱 트리를 통해 바로 의미 분석을 해도 되고, 여러 가지 처리 후 의미 분석 단계로 넘어갈 수 있다. 구문 분석에서 의미 분석 단계로 넘어갈 때 필요한 두 가지 도구를 소개하겠다. Syntax-Directed Definition/Translation(SDD/SDT) Abstract Syntax Tree(AST) 이번 포스트에서는 SDD만 설명하고 마치도록 하고, 이어지는 포스트에서 AST에 대해 설명하겠다. Syntax-Directed Definition(SDD) S..

[컴네/CN] WLAN, Cellular

Wireless and Mobile Networks 무선 선이 없는 네트워크로 Wifi, Bluetooth, Zigbee, NFC가 있다. 선이 없다는 것은 이동성을 보장하는 것이 아니다. - Zigbee Iot 통신 시 주로 사용하는 것으로 가전제품 또는 음식물 쓰레기 통에서도 사용한다. 이러한 IoT 통신은 파워를 적게 쓰는 것이 요구사항이므로 대부분 파워를 적게 사용한다. 따라서 직비 통신은 저전력 통신 중 하나다. - Bluetooth 최근에 LP 모드로 업데이트하여 저전력으로 통신이 가능해졌다. - NFC 교통카드에서 사용하는 통신 방법이다. 이동 무선 + 단말기의 이동성을 합쳤다. 휴대폰과 같은 단말기는 이동성이 가장 큰 요구사항이다. 따라서 무선임을 가정하는데, 유선도 이동성이 있을 수 있지..

[컴네/CN] WebRTC

웹기반 실시간 통신: 화상회의 플러그인 없이 웹 브라우저에서 음성/영상/P2P를 공유 가능하게 하는 Open Source project다. 화상회의는 보통 P2P 방식을 사용한다. 그런데 우리는 보통 노트북이나 스마트폰을 이용하여 화상회의를 진행하는데, 이러한 단말기들은 공유기 밑에서 연결되어 있다. 그러나 공유기는 사설 ip 주소로 직접 통신이 되지 않기 때문에 공인 ip 주소로 서로 다른 단말기가 통신하는데, 때문에 공유기와 NAT를 잘 알고 있어야 한다. 공유기를 통과하는 기술인 STUN, TURN, ICE와 NAT tarversal 기술은 필수적이다. 화상회의 시 각 단말기들은 공유기 밑이기 때문에 공유기를 포트포워딩하여 포트 번호를 동록해야 통과할 수 있다. 위 통신은 실제 웹에서 이뤄지기 때문..

[컴네/CN] Nodejs

Nodejs 서버 소프트웨어를 개발하는 플랫폼으로 자바 스크립트 기반이다. 내장 HTTP 서버 라이브러리 환경으로 웹 서버 개발 시 브라우저 바깥에서 서버를 개발할 수 있다. v8로 빌드된 이벤트 기반 자바 스크립트 런타임을 가지고 있으며, v8은 c++ 기반이므로 JS를 돌리는 환경이 c++이기 때문에 런타임이 짧다. I/O 처리 성능이 우수한데, non-blocking, single thread, 비동기적으로 프로그래밍 하여 콜백이나 디버깅이 어렵다는 특징이 있다. var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'});..

[컴네/CN] Multimedia

인터넷 멀티미디어 스트리밍 프로토콜 인터넷 멀티미디어 스트리밍 프로토콜은 유튜브와 같은 미디어에서 스트리밍 시 필요한 기술이 여러 가지가 있다. 신호 - SIP/SDP 시작과 관련된 프로토콜이다. 오디오/비디어 전송과 제어 메세지 전송 - HTTP(HLS,HTTP Live Stream ), RTP/RTMP (최근에는 HLS로 통일) - RTCP/RTMP/RTSP 스트리밍 프로토콜 - RTMP, RTSP 재생, fastforward, rewind 등 DVD와 비슷하다. 실제 요청, 재생 등에 사용되는 프로토콜이다. 실시간 프로토콜 - WebRTC 줌과 같은 화상회의에서 주로 사용한다. 전통적인 프로토콜 - RTP/UDP (비디오 전송) RTP는 UDP 위에서 실제로 데이터를 전송 - RTSP (재생, 멈춤..

반응형
LIST