A4 용지총 4 페이지를넘기지말것. 반드시컴퓨터로출력해서제출. 10/28( 월 ) 수업시간에제출. No delay acceptable. Exercise 2 (40pts) SM5 K--( 교재 4.3) 프로그램들을가상기계 (abstract machine) 인 SM5에서실

Similar documents
Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

OCaml

Homework 1 SNU , Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int lis

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

PowerPoint 프레젠테이션

chap 5: Trees

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - a10.ppt [호환 모드]

SIGPLwinterschool2012

Chapter 4. LISTS


SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx


Chapter 4. LISTS

slide2

USER GUIDE

Microsoft Word - FunctionCall

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

C# Programming Guide - Types

untitled

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

1 01 [ ] [ ] plus 002

adfasdfasfdasfasfadf

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

2014밝고고운동요부르기-수정3

2005프로그램표지

RVC Robot Vaccum Cleaner

PowerPoint 프레젠테이션

UI TASK & KEY EVENT

슬라이드 1

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

EA0015: 컴파일러

Microsoft Word - PLC제어응용-2차시.doc

chap01_time_complexity.key

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Observational Determinism for Concurrent Program Security

=

chap x: G입력

歯엑셀모델링

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

ThisJava ..

Frama-C/JESSIS 사용법 소개

Deok9_Exploit Technique

윈도우즈프로그래밍(1)

설계란 무엇인가?

슬라이드 1

歯표지.PDF

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

Microsoft PowerPoint - o8.pptx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft Word - ExecutionStack

1

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - PL_03-04.pptx

untitled



Semantic Consistency in Information Exchange

hlogin7

Chapter ...

김기남_ATDC2016_160620_[키노트].key

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint 웹 연동 기술.pptx

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

歯처리.PDF


Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

untitled

Microsoft PowerPoint - semantics


A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 15-MARS

API 매뉴얼

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

C 언어 프로그래밊 과제 풀이

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

정답-1-판매용

T100MD+

<C6F7C6AEB6F5B1B3C0E72E687770>

<B3EDB9AEC0DBBCBAB9FD2E687770>

DIY 챗봇 - LangCon

Microsoft PowerPoint - chap05-제어문.pptx

OCW_C언어 기초

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

Transcription:

Homework 4 SNU 4190.310, 2013 가을이광근 Program Due: 10/26( 토 ) 24:00 Essay Due: 10/28( 월 ), 14:00 이번숙제의목적은 : 상식적인수준에서디자인된명령형언어의대표격인 C언어의역사와, 컴퓨터실행 ( 기계적인계산 ) 과상위논리의관계, 프론티어들의프로그래밍언어사용경향에대한자료등을읽고느낀바를글로쓰기. 언어사이의자동번역기를제작해보기. 메모리재활용의기본개념을구현해보기. 앞으로프로그래밍언어구현에서넘어야할산이, 상식만으로는넘기어렵다는것을겪어보기. Exercise 1 (30pts) 논술에세이 강의홈페이지의읽을거리 [Part I] 에매달린글들을읽고리포트로작성해서제출합니다. 논술의구성은 : 읽은내용정리 30%, 읽고느낀점 70% 로. 각단락은두괄식으로. 두괄식이란, 단락의결론을단락의첫문장으로가져오는것을말합니다. 단락내용을정리한문장 (topic sentence) 이단락의첫문장. 작성한에세이단락들의첫문장들만을읽어도논술의흐름이부드럽게되는지확인. 1

A4 용지총 4 페이지를넘기지말것. 반드시컴퓨터로출력해서제출. 10/28( 월 ) 수업시간에제출. No delay acceptable. Exercise 2 (40pts) SM5 K--( 교재 4.3) 프로그램들을가상기계 (abstract machine) 인 SM5에서실행될수있도록번역하는번역기를제작한다. SM5는가상의기계이다. SM 은 Stack Machine 을뜻하고, 5 는그기계의부품이 5개이기때문이다 : (S, M, E, C, K) S 는스택, M 은메모리, E 는환경, C 는명령어, K 는남은할일 ( continuation 이라고부름 ) 을뜻하고다음집합들의원소이다 : S Stack = Svalue list M Memory = Loc Value E Environment = (Var (Loc + Proc)) list C Command = Cmd list K Continuation = (Command Environment) list v Value = Integer + Bool + { } + Record + Loc x Var a, o, l Loc = Base Offset Offset = Integer z Integer b Bool r Record = (Var Loc) list w Svalue = Value + Proc + (Var Loc) (* stackable values *) p Proc = Var Command Environment Cmd = {push v, push x, push(x,c ), pop, store, load, jtr(c,c ), malloc, box z, unbox x, bind x, unbind, get, put, call, add, sub, mul, div, eq, less, not} 2

기계의작동은다음과같이기계의상태가변화하는과정으로정의할수있다 : (S, M, E, C, K) (S, M, E, C, K ) 언제어떻게위의기계작동의한스텝 ( ) 이일어나는지는다음과같다 : (S, M, E, push v :: C, K) (v :: S, M, E, C, K) (S, M, E, push x :: C, K) (w :: S, M, E, C, K) if (x, w) is the first such entry in E (S, M, E, push (x, C ) :: C, K) ((x, C, E) :: S, M, E, C, K) (w :: S, M, E, pop :: C, K) (S, M, E, C, K) (l :: v :: S, M, E, store :: C, K) (S, M{l v}, E, C, K) (l :: S, M, E, load :: C, K) (M(l) :: S, M, E, C, K) 3

(true :: S, M, E, jtr(c 1, C 2 ) :: C, K) (S, M, E, C 1 :: C, K) (false :: S, M, E, jtr(c 1, C 2 ) :: C, K) (S, M, E, C 2 :: C, K) (S, M, E, malloc :: C, K) ( a, 0 :: S, M, E, C, K) new a (w 1 :: :: w z :: S, M, E, box z :: C, K) ([w 1,, w z ] :: S, M, E, C, K) ([w 1,, w z ] :: S, M, E, unbox x :: C, K) (v :: S, M, E, C, K) w k = (x, v), 1 k z (w :: S, M, E, bind x :: C, K) (S, M, (x, w) :: E, C, K) (S, M, (x, w) :: E, unbind :: C, K) ((x, w) :: S, M, E, C, K) (l :: v :: (x, C, E ) :: S, M, E, call :: C, K) (S, M{l v}, (x, l) :: E, C, (C, E) :: K) (S, M, E, empty, (C, E ) :: K) (S, M, E, C, K) (S, M, E, get :: C, K) (z :: S, M, E, C, K) read z from outside (z :: S, M, E, put :: C, K) (S, M, E, C, K) print z and newline 4

(v 2 :: v 1 :: S, M, E, add :: C, K) (plus(v 1, v 2 ) :: S, M, E, C, K) (v 2 :: v 1 :: S, M, E, sub :: C, K) (minus(v 1, v 2 ) :: S, M, E, C, K) (z 2 :: z 1 :: S, M, E, mul :: C, K) ((z 1 z 2 ) :: S, M, E, C, K) similar for div (v 2 :: v 1 :: S, M, E, eq :: C, K) (equal(v 1, v 2 ) :: S, M, E, C, K) (v 2 :: v 1 :: S, M, E, less :: C, K) (less(v 1, v 2 ) :: S, M, E, C, K) (b :: S, M, E, not :: C, K) ( b :: S, M, E, C, K) less(z 1, z 2 ) = z 1 < z 2 plus(z 1, z 2 ) = z 1 + z 2 plus( a, z 1, z 2 ) = a, z 1 + z 2 if z 1 + z 2 0 plus(z 1, a, z 2 ) = a, z 1 + z 2 if z 1 + z 2 0 minus(z 1, z 2 ) = z 1 z 2 minus( a, z 1, z 2 ) = a, z 1 z 2 if z 1 z 2 0 equal(z 1, z 2 ) = z 1 = z 2 equal(b 1, b 2 ) = b 1 = b 2 equal(, ) = true equal(r 1, r 2 ) = ( x, l r 1 : x, l r 2 ) ( x, l r 2 : x, l r 1 ) equal( a 1, z 1, a 2, z 2 ) = a 1 = a 2 z 1 = z 2 equal(, ) = false SM5 의프로그램 C 를실행한다는것은, C 만가지고있는빈기계상태를위 에서정의한방식으로변환해간다는뜻이다 : (empty, empty, empty, C, empty) 5

예를들어, push 1 :: push 2 :: add :: put :: empty 는 K-- 프로그램 write 1+2과같은일을하게된다. 여러분이할것은, 잘돌아가는 K-- 프로그램을입력으로받아서같은일을하는 SM5 프로그램으로변환하는함수 trans: K.program -> Sm5.command 를작성하는것이다. trans가제대로정의되었는지는, K-- 프로그램 E에대해서, K.run(E) 와 Sm5.run(trans(E)) 을실행해서확인할수있을것이다. 모듈 Sm5, 모듈 K, 그리고 K--의파서는제공된다 (TA 페이지참고 ). Exercise 3 (40pts) SM5 Limited = SM5 + 메모리재활용 SM5 메모리에서는무한히많은새로운주소가샘솟을수없다. 이제, SM5의메모리는 8K(2 13 ) 개의주소만있다고하자. 위의문제에서주어진모듈 Sm5를뜯어고쳐서, malloc할것이더이상없을때메모리를재활용하는함수 gc를장착하라. 즉, (S, M, E, malloc :: C, K) (l :: S, M, E, C, K) new l 이아래와같이변경될것이다 : (S, M, E, malloc :: C, K) (l :: S, M, E, C, K) new l, if domm < 2 13 (S, M, E, malloc :: C, K) (l :: S, gc( ), E, C, K) recycled l, if domm = 2 13 재활용함수 gc는실제구현보다훨씬간단하다. 현재메모리에서미래에사용할수있는부분만을모으면될것이다. 그러한부분들은현재기계상태의두개의부품 ( 와 ) 에서부터도달가능한모든메모리주소들이될것이다. Exercise 4 (30pts) 탐사준비 탐사해야할지역의지도를보고탐사를성공리에마치기위해필요한최소의준비물을알아내는프로그램을작성해보자. 탐사는지도에나타난길을따라이동하면서길에놓인보물상자를열고보물을모아가는것이고, 모든보물이모아지면그탐사는성공한것이다. 준비물은모든보물상자를열수있는열쇠들이다. 보물상자와열쇠 : 6

보물상자에는고유의알파벳이름이표시되어있다. 이름없이 라고찍혀있는보물상자도있다. 같은이름의보물상자는같은열쇠로열린다. 하나의열쇠는외갈래혹은두갈래로갈라진가지구조 (tree) 이다. 열쇠는반복해서사용할수있다. 보물상자와열쇠를 OCaml 타입으로정의하면, type treasure = StarBox NameBox of string type key = Bar Node of key * key 탐사지도 : 시작지점은하나이다. 길들은모두외길이거나두갈래로나뉘어진다. 보물상자들은모두막다른골목의끝에있다. 갔던길을되돌아오지않고왔던곳으로다시오는방법은없다 (tree). 길목에세워진안내판에는앞으로만날보물상자의알파벳이름이쓰여져있다. 모든안내판의이름은모두다르다. 탐사지도를 OCaml 타입으로정의하면, type map = End of treasure Branch of map * map Guide of string * map 보물상자마다필요한열쇠의모양은보물상자의위치가전체탐사지도에서어디냐에따라결정되는데, 지도에서각지역이암시하는열쇠의모양은다음의조건으로결정된다 : 7

현재위치 ( 지도 ) e 위치의뜻열쇠모양의조건 보물상자 - (Bar) x x 라는이름의보 물상자 현재위치에서 x 를열어줄열쇠모양 x e 1 안내판 x 이앞에있는지도 e 1 e 1 안에서만날보물상자 x 의열쇠가 α 이고 e 1 의시작점이암시하는열쇠모양을 e 1 e 2 e 1 과 e 2 로갈라 지는갈림길 β 라고하면, 현재위치가암시하는열쇠모 양은 (α, β)( 왼쪽가지 α, 오른쪽가지 β). e 1 의시작점이암시하는열쇠모양은 (α, β) 이여야하고 e 2 의시작점이암시하 는열쇠모양은 α 이어야한다. 이때, 현재 위치가암시하는열쇠모양은 β. 예를들어, 각지도를성공적으로탐험할최소의 ( 열쇠들크기의합을기준으 로 ) 열쇠꾸러미는다음과같다 : 1. 지도 x 에는 { }. 2. 지도 x x 에는 { }. 3. 지도 ( x x) 에는 { }. 4. 지도 ( x (x x)) 를성공적으로탐험하는것은불가능. 5. 지도 ( x x) (( y y) ) 에는 { }. 6. 지도 ( x x) ( y y) 에는 {, (, )}. 7. 지도 x 에는 {, (, )}. 다음의타입에맞도록, 위와같은일을하는 getready 함수 를정의하기바랍니다. getready: map key list 8