게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

숙제5 제출 및 보충스펙 공지입니다.(11 15 추가) (11 16 뼈대코드 버그수정)

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이동권



가입: 2012년 9월 9일
올린 글: 195

올리기올려짐: 2017년11월7일 17:42    주제: 숙제5 제출 및 보충스펙 공지입니다.(11 15 추가) (11 16 뼈대코드 버그수정) 인용과 함께 답변

안녕하세요 수강생 여러분.

숙제 5가 제출되었습니다.

내용 : http://ropas.snu.ac.kr/~kwang/4190.310/17/hw5.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/17/submit/index.pl
기한 : 11/18 (토) 밤 12시

* 과제 관련 주의 사항
과제를 하고 제출하기에 앞서 꼭 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=5853 글의 주의사항을 확인해 주세요.

* 숙제 스펙 보충사항
(질문은 이 글에 답글로 달지 마시고, 별도의 글로 질문해 주시기 바랍니다)

* K-- 언어 문법 및 의미구조
http://ropas.snu.ac.kr/~ta/4190.310/17/document/K_doc/k--.pdf
주의 : K- 언어와 다른 K-- 언어입니다.

* 뼈대코드
- http://ropas.snu.ac.kr/~ta/4190.310/17/document/SM5_skel.zip
- 뼈대코드에는 K--언어의 정의와 실행기, SM5 언어의 정의와 실행기가 제공되어 있습니다.
- 뼈대코드 디렉토리에서 make 명령을 실행하시면 숙제 전체가 컴파일되고, 'run' 이라는 실행파일이 생성됩니다. run 파일을 다음과 같이 실행하시면 입력으로 받은 k-- 프로그램을 sm5로 번역하여, sm5 실행기로 실행합니다.

(11 16 추가)
뼈대코드의 k.ml에 버그가 발견되어 수정하였습니다. 새로운 뼈대코드를 받아 k.ml만을 덮어쓰시거나, 258번째 라인의 ....eval mem ... 부분을 아래와 같이 ...eval mem'....으로 수정해서 사용하시면 됩니다.

코드:
let ( _ , mem'') = eval mem' env e_body in


while문의 조건문 안에서 assign혹은 read를 하지 않는 경우에는 이전과 완전히 동일하고, 해당 뼈대코드 수정으로 SM5번역이 달라지는 점도 없으니 테스트하실때만 수정된 뼈대코드로 테스트해보시면 될 것 같습니다. 불편을 끼쳐드려 정말 죄송합니다.

코드:

make
./run examples/test1.k--


README 파일에 테스트에 대한 조금 더 상세한 설명과 구현에 도움이 될만한 추가 옵션들에 대한 설명이 제공되어 있습니다.


------------

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점 처리될 수 있습니다.

(1115 추가)
-뼈대코드에서 GC가 장착된 SM5로 테스트를 진행하고자 하시는 경우 -gc 옵션을 주시면 됩니다. README파일에 이에 대한 설명이 누락되어 추가합니다.


-----
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay