게시판 인덱스

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

HW6 결과물에 대한 질문입니다.

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



가입: 2006년 5월 6일
올린 글: 5

올리기올려짐: 2006년5월27일 14:55    주제: HW6 결과물에 대한 질문입니다. 인용과 함께 답변

4번숙제에서도 헷갈렸던 부분입니다만,

x:=1;
x:=2

위와같은 프로그램이 주어졌다고 하면, 프로그램의 진행상에서는

cmd mem_hat
x:=1 x->[1,1]
x:=2 x->[1,2]

의 메모리 상태만을 가지게 됩니다.

숙제에서 요구하는 것은 위 처럼 실행과정에서 나타나는 메모리 상태만을 표현할 수 있으면 되는것인지, 아니면

cmd mem_hat
x:=1 x->[1,1]
x:=1;x:=2 x->[1,2]
x:=2 x->[2,2]

위처럼 프로그램에서 얻을수 있는 (실제로는 실행불가능한 x:=2와 같은 command를 포함하는) 모든 sub command에 대한 메모리 상태를 표현해야 하는것인지요?

그리고 하나 더, 이번 숙제에서도 readint는 실행시에 직접 입력하는건가요, 아니면 [-infinite, infinite]로 요약해서 하는건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년5월28일 21:15    주제: 인용과 함께 답변

숙제의 스펙은
각 command에 대해서 그 command가 실행되기
직전의 요약메모리를 모으는 것 입니다.

따라서
x := 1;
x := 2

와 같은 경우는,

seq(x:=1, x:=2)이므로

empty-mem -> sequence command의 직전 상태
empty-mem -> x := 1 command의 직전 상태
x := 1;
{x->[1,1]} -> x := 2 command의 직전 상태
x := 2;

위와 같은 형태가 될 것 입니다.

그리고 참고로

x := 1;
x := 2;
x := 3;
이라는 프로그램이 있으면,
x:= 3 이라는 command의 직전으로
{x -> [1,2]}
라는 메모리가 와도 안전(sound)하기는 합니다.

하지만,
x := 2라는 command에 의해서 x -> 1이라는 결과가 x -> 2인 상태로
바뀌게 되므로,
{x->[2,2]}라는 메모리로 요약하는 것이 '더욱' 정확한 결과가 될 것입니다.

하지만 경우에 따라서는 기존의 메로리에 있는 x의 값을 무시하고
(위의 경우처럼)
새로운 값으로 바꿀 수 없는 경우도 있으니
충분히 생각하시면서 design하시길 바랍니다.

마지막으로 분석기는 어떤 경우에라도 항상 분석을
끝낼 수 있어야 합니다.
이말은 readint라는 외부입력이 있어도 안전하게 분석을
하면서서 끝을 낼 수 있어야 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
김은상
손님





올리기올려짐: 2006년5월29일 22:16    주제: 인용과 함께 답변

진민식 씀:
숙제의 스펙은
각 command에 대해서 그 command가 실행되기
직전의 요약메모리를 모으는 것 입니다.

따라서
x := 1;
x := 2

와 같은 경우는,

seq(x:=1, x:=2)이므로

empty-mem -> sequence command의 직전 상태
empty-mem -> x := 1 command의 직전 상태
x := 1;
{x->[1,1]} -> x := 2 command의 직전 상태
x := 2;

위와 같은 형태가 될 것 입니다.


라고 하셨는데, seq까지 메모리를 일일이 출력할 필요는 없지 않나요?
지난 숙제에서도 당연히 매 커맨드라고 해서, 코드상의 한 커맨드라고
이해하고 처리했는데요.

syntax에 C;C가 있으니 그것까지 출력해야 한다고 하시면 할말 없지만,
사실 전혀 쓸모없는 출력을 내보내려니 찜찜하네요.
위로
김용태
손님





올리기올려짐: 2006년5월30일 3:45    주제: 숙제 스펙을 보니, 인용과 함께 답변

아래 처럼 나와 있던데.
인용:
before executing each command inside P (a table from each command inside
P to the set of abstract memories that has occurred right before executing the
command).


그럼, 매번 계속 출력하는게 맞는 것 아닌가 싶네요
위로
손님






올리기올려짐: 2006년5월30일 19:00    주제: Re: 숙제 스펙을 보니, 인용과 함께 답변

김용태 씀:
아래 처럼 나와 있던데.
인용:
before executing each command inside P (a table from each command inside
P to the set of abstract memories that has occurred right before executing the
command).


그럼, 매번 계속 출력하는게 맞는 것 아닌가 싶네요


스펙은 그렇긴 한데요...
파서에서 파싱을 마치면, seq( C1;C2 ), C1=seq(C1-1;C1-2), C1-1=seq(C1-1-1,C1-1-2)...
이런식으로 seq만 계속 연속되서 나오는 경우가 많습니다.
그래서 seq가 연속으로 많이 나올 경우, 메모리 상태는 전혀 변하지 않았는데, 계속 출력을 해야하나 싶어서 질문을 드린 거구요.
위로
손님






올리기올려짐: 2006년5월30일 19:34    주제: Re: 숙제 스펙을 보니, 인용과 함께 답변

김용태 씀:
아래 처럼 나와 있던데.
인용:
before executing each command inside P (a table from each command inside
P to the set of abstract memories that has occurred right before executing the
command).


그럼, 매번 계속 출력하는게 맞는 것 아닌가 싶네요



어떻게 출력하라는 것까지 스팩에 나와있나요?
전체 프로그램을 주었을 떄 PGM -> Abstract Memory 인 함수를 리턴하도록 하는 함수를 작성하면 되지 않나요? Pretty Printer 를 어떻게 하라는 스팩은 없는데, 조교님. 출력을 어떻게 하면 좋을지요?

Seq도 다 찍어주나요? ( Linear 하게 다 찍으면 누가 누구의 Seq 인지 잘 모를 정도이긴 하지만, 찍는건 어렵진 않습니다. ) 아니면, Seq(Wink를 제외한 실질적인 PGM. 즉 메모리 상태를 변경할 수 있는 PGM들에 대해서만 직전에 출력을 할까요?
위로
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년5월30일 19:58    주제: 인용과 함께 답변

구현은 각 서브프로그램이 실행되기 직전의
abstract memory들을 모으는 것으로 하시고(스펙대로),
출력은 모든 command(seq 포함)에 대해서
출력하거나,
분석의 결과가 필요하다고 생각되는 부분만
해 주셔도 무방합니다.단 이 때는 출력할 command 와
출력하지 않을 command 를 잘 구분해 주세요.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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