게시판 인덱스

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

숙제 5와 관련된 작년 게시판의 글과 질문

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2010)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
서상민



가입: 2006년 9월 11일
올린 글: 25

올리기올려짐: 2010년4월22일 16:12    주제: 숙제 5와 관련된 작년 게시판의 글과 질문 인용과 함께 답변

마감이 오늘 포함해서 3일밖에 남지 않았는데 질문이 전혀 없군요.
저만 빼고 모두들 쉽게 해결하시는 건가요? Confused

작년 게시판을 보고 숙제 5 (작년에는 숙제 4)와 관련된 글들을 모아봤습니다.
- 숙제 4에 대해서 알려드립니다. https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1599
- 정의되지 않은 연산을 어떻게 처리할까요? https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1608
- tracingEval에서 중복된 실행 경로 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1605
- 숙제4에 관련되어서 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1609
- pointCollecting의 출력 타입 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1611
- INT와 LOC에 대한 질문 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1612
- read에 대한 처리 질문 https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=1613

우선 이 글들을 참고하면 되겠죠?
특별히 작년의 내용과 다르게 해결해야 하는 것들이 있나요?

다음은 제가 스펙과 소스를 보고 생긴 질문들입니다.
1) k.ml을 보니까 trace가 memory list로 정의되어 있는데, 기계상태의 전이는 memory의 변화만을 기록하는 건가요?
작년에는 memory와 함께 program counter와 같은 것을 같이 사용해도 된다고 얘기가 오고 갔는데요.

2) tracingEval에 대한 질문
만약 memory만이 기계상태의 전이라면, memory의 변화가 실제 일어나는 경우만, 즉 assignment가 있는 경우만 memory의 변화가 있다고 보고 그 기록들을 모으면 되는건지, 아니면 각 stmt를 실행해 가면서 memory가 변하지 않아도 모두 기록해야 하는 건지 궁금합니다.
그리고 assignment가 있어도 memory의 변화가 없다면 (즉, 같은 값이 대입하는 경우) 기계상태의 변화는 없는 건가요?

3) collectingEval에 대한 질문
collectingEval이 의미하는 것은 "기계상태의 전이가 있을 때마다 (memory가 변할 때마다) 그 상태를 모두 저장하라"는 것인가요?
만약 입력 프로그램이
코드:
x := read;
y := x + 1

이라면 결과는 (아직 작성한 것은 아니고 생각만 한 결과입니다)
{ x : -5 } { x : -4 } .. { x : 5 } { x : -5 y : -4 } { x : -4 y : -3 } ... { x : 5 y : 6 }
과 같이 나오는 게 맞는지요?
오늘 수업시간에 operational sematics의 의미구조 요약을 설명하시다가 관련된 얘기를 위와 같이 하신 것 같은데, 제가 스펙을 제대로 이해한 것인지 모르겠네요.

4) pointCollectingEval에 대한 질문
pointCollectingEval의 의미는 "각 명령문 별로 기계 상태 (memory의 상태)를 저장해 두라"는 것이 맞나요?
저장하는 기계상태는 스펙에 나온대로 명령문의 실행 직전이고요.
3)의 프로그램을 예로 들면, K.string_of_cmd로 출력된 결과가
코드:
=== INPUT PROGRAM ===
2: 0: x := read;
1: y := (x + 1)

이므로
0과 2의 포인트에서는 { Empty }
1의 포인트에서는 { x : -5 } { x : -4 } .. { x : 5 }
가 저장되어 있는 것이 맞는 건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
이우석



가입: 2007년 9월 26일
올린 글: 72

올리기올려짐: 2010년4월23일 13:59    주제: 답변 인용과 함께 답변

답변입니다.

1)
인용:
k.ml을 보니까 trace가 memory list로 정의되어 있는데, 기계상태의 전이는 memory의 변화만을 기록하는 건가요? 작년에는 memory와 함께 program counter와 같은 것을 같이 사용해도 된다고 얘기가 오고 갔는데요.


작년에는 기계상태를 각자 마음대로 정해서 할 수 있게 했었습니다. 이번에는 조교들끼리 의논해본 결과 기계상태를 프로그램카운터 와 메모리가 아닌 메모리만으로 하기로 정했습니다. 그래서 제공한 뼈대코드에도 그렇게 되어있지요.

2)
인용:

만약 memory만이 기계상태의 전이라면, memory의 변화가 실제 일어나는 경우만, 즉 assignment가 있는 경우만 memory의 변화가 있다고 보고 그 기록들을 모으면 되는건지, 아니면 각 stmt를 실행해 가면서 memory가 변하지 않아도 모두 기록해야 하는 건지 궁금합니다.

tracingEval같은 경우 memory의 변화가 실제 일어나는 경우만 기록을 모으지 않습니다. 예컨데 trace가 [m] 인 상태에서 skip 커맨드를 만났어도 trace를 [m ; m] 으로 기록해야 합니다.

3) 생각하신데로가 맞습니다.

4) 생각하신데로가 맞습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2010) 시간대: GMT + 9 시간(한국)
페이지 11

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


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