최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월3일 19:50 주제: 숙제 5 공지 및 스펙 보충 (11/4 업데이트) |
|
|
안녕하세요,
숙제 5가 올라왔음을 알려드립니다.
내용 : http://ropas.snu.ac.kr/~kwang/4190.310/15/hw5.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/15/submit/index.pl
기한 : 11/11 (수) 밤 12시
* 과제 관련 주의 사항
과제를 하고 제출하기에 앞서 꼭 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=4922 글의 주의사항을 확인해 주세요.
* 숙제 스펙 보충사항
(질문은 이 글에 답글로 달지 마시고, 별도의 글로 질문해 주시기 바랍니다)
* K-- 언어 문법 및 의미구조
http://ropas.snu.ac.kr/~ta/4190.310/15/document/K_doc/k--.pdf
주의 : K- 언어와 다른 K-- 언어입니다.
(11/4 15:00 업데이트) 실수로 링크에 K- 언어의 문서가 달려있었습니다. 이를 수정하여 올바른 문서로 링크하였습니다.
* 뼈대코드
- http://ropas.snu.ac.kr/~ta/4190.310/15/document/SM5_skel.zip
- 뼈대코드에는 K--언어의 정의와 실행기, SM5 언어의 정의와 실행기가 제공되어 있습니다.
- 뼈대코드 디렉토리에서 make 명령을 실행하시면 숙제 전체가 컴파일되고, 'run' 이라는 실행파일이 생성됩니다. run 파일을 다음과 같이 실행하시면 입력으로 받은 k-- 프로그램을 sm5로 번역하여, sm5 실행기로 실행합니다. README 파일에 조금 더 상세한 설명이 제공됩니다.
코드: |
make
./run examples/test1.k--
|
------------
Exercise 1 "SM5"
- 뼈대코드 중 translate.ml 파일을 제출합니다. 꼭 주의해 주세요, 엉뚱한 ml 파일을 잘못 제출하시면 조교팀이 해결해 드릴 방법이 없습니다.
- 주석으로 TODO가 표시되어 있는 trans 함수를 완성해서 제출하시면 됩니다. K- 실행기 때와 마찬가지로, 간단한 몇몇 케이스에 대한 구현을 제공해 드리므로 이를 보고 익히셔서, 나머지 부분을 완성하세요.
- "같은 일을 하는" 은 다음과 같이 정의됩니다.
"같은 일을 한다" = "같은 조건에서 실행했을 때 모든 side-effect 의 결과가 같다"
+ "같은 조건" : K-- 에서의 빈 메모리, 빈 환경 / SM5 에서의 "C만 가지고 있고 나머지 부품은 비어있는 기계상태"
+ "모든 side-effect" : K-- 에서의 read/write, SM5 에서의 get/put
+ 간단한 예를 들면, K-- 에서 read 로 3을 받아 write 로 4 를 내놓았다면, SM5 에서는 get 으로 3 을 받아 put 으로 4 를 내놓아야 한다는 것입니다.
그 도중에 일어나는 환경, 메모리의 변화는 "같은 일을 한다" 와 무관합니다.
- 번역 과정에서, K-- 프로그램에서 사용하는 변수 이름과 겹치지 않는 변수 이름이 필요한 경우가 있습니다. 이를 위해 K-- 언어에서 사용하는 변수 이름에는 #, @와 같은 특수문자를 사용되지 않는다고 가정하겠습니다.
-----------
Exercise 2 "SM5 Limited = SM5 + 메모리 재활용"
- 뼈대코드 중 sm5.ml 파일을 제출합니다. 꼭 주의해 주세요, 엉뚱한 ml 파일을 잘못 제출하시면 조교팀이 해결해 드릴 방법이 없습니다.
- 주석으로 TODO가 표시되어 있는 malloc_with_gc 함수를 완성해서 제출하시면 됩니다. 역시 약간의 코드 틀을 잡아두었으니 참고하시기 바랍니다.
- 메모리 크기의 제한을 8192(8k) 에서 128로 바꾸도록 하겠습니다. 예년에 크기 제한이 8192개였을 때, 채점에 너무 오랜 시간이 걸리는 문제가 있었기 때문입니다.
혹시 이 게시글을 미처 확인하지 못해 메모리 크기 제한을 8192로 하여 코드를 작성하여 감점된 경우에는, 페널티 없이 수정해서 재채점해 드리겠습니다.
- 메모리 재활용은 malloc을 실행할 때 메모리의 크기가 128 이상이 된 경우 작동합니다. 메모리의 크기는 loc --> value 엔트리의 개수입니다.
메모리 재활용을 실행하였음에도 불구하고 메모리 크기가 128 미만으로 줄어들지 않았으면, 뼈대코드에 제공된 GC_Failure예외를 내 주세요.
- 수업시간에 배운 GC알고리즘을 구현하는 것이 과제의 의도입니다. 무조건 GC_Failure를 발생시키거나, 적당히 malloc 회수만 세서 GC_Failure를 발생시킨다거나 하는 코드는 0점 처리될 수 있습니다.
----- |
|