게시판 인덱스

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

숙제 질문입니다.

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





올리기올려짐: 2006년5월30일 11:30    주제: 숙제 질문입니다. 인용과 함께 답변

진민식 씀:

2. C-- 의 semantics에 의하면 주소에 대해서는 연산이 정의되어 있지 않습니다. 그리고 정수값을 address로도 사용할 수 없습니다.
이 경우는 runtime error가 될 것 입니다.

분석기는 이러한 경우에도 프로그램을 안전하게 분석해야 할 것 입니다.
예를 들어 if문의 한 쪽 branch에는 x := 1; *x := 1라는 command가
있더라도 다른쪽 branch의 실행에 대한 분석은 (다른 쪽 brach의 command가 semantics를 자 따르고 있다면) 정확히 이루어 져야 하고 if 문의 다음 command 까지 계속 분석 할 수 있어야 할 것 입니다.

라고 하셨는데요. 분기문에서 한쪽이 에러가 난 경우는 다른쪽이 정상적으로 실행될 수 있으니 계속 분석할 수 있어야 하는 건 이해가 되는데요.
분기문이 아닌 곳에서 명백하게 에러가 발생한 경우에는 끝까지 분석을 안하고
그 위치에서 종료를 해도 되는지요?

예를 들면,
x=1;
y=*x; // error.
z=x+y;
w=z+1;
....

이런 코드가 있다면 error가 발생한 곳에서 종료해도 되는지요?
error를 출력하고 계속 분석을 해야 하는지요?
위로
정우성



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

올리기올려짐: 2006년5월30일 12:09    주제: Re: 숙제 질문입니다. 인용과 함께 답변

김은상 씀:

진민식 씀:

2. C-- 의 semantics에 의하면 주소에 대해서는 연산이 정의되어 있지 않습니다. 그리고 정수값을 address로도 사용할 수 없습니다.
이 경우는 runtime error가 될 것 입니다.

분석기는 이러한 경우에도 프로그램을 안전하게 분석해야 할 것 입니다.
예를 들어 if문의 한 쪽 branch에는 x := 1; *x := 1라는 command가
있더라도 다른쪽 branch의 실행에 대한 분석은 (다른 쪽 brach의 command가 semantics를 자 따르고 있다면) 정확히 이루어 져야 하고 if 문의 다음 command 까지 계속 분석 할 수 있어야 할 것 입니다.

라고 하셨는데요. 분기문에서 한쪽이 에러가 난 경우는 다른쪽이 정상적으로 실행될 수 있으니 계속 분석할 수 있어야 하는 건 이해가 되는데요.
분기문이 아닌 곳에서 명백하게 에러가 발생한 경우에는 끝까지 분석을 안하고
그 위치에서 종료를 해도 되는지요?

예를 들면,
x=1;
y=*x; // error.
z=x+y;
w=z+1;
....

이런 코드가 있다면 error가 발생한 곳에서 종료해도 되는지요?
error를 출력하고 계속 분석을 해야 하는지요?


저는 error를 출력하고 계속 분석하는 것으로 이해를 했습니다.
이 경우 y의 범위를 [-oo,oo]로 가정 해주는 것으로 진행할 생각입니다. (안전한 분석을 위해 ) 제 생각이 맞는지는 모르겠습니다.
첨에 예외처리를 일부만 하며 진행해서 그런지... 에러 잡고, 계속 진행시키도록 하는게 쉽지 않네요 T_T
위로
사용자 정보 보기 비밀 메시지 보내기
진민식



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

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

인용:
이런 코드가 있다면 error가 발생한 곳에서 종료해도 되는지요?
error를 출력하고 계속 분석을 해야 하는지요?


runtime error가 발생한 곳에서 분석기가 종료하게 되면,
사용하기 불편한 분석기가 될 것 입니다.
보통 분석기는 회사의 QA팀에서 사용하는데,
source 상의 error가 고쳐질 때 까지 이 후의
코드를 분석할 수 없으면 상당히 불편하겠지요.

error message를 출력하는 것보다는 design에서
위와 같은 상황을 고려하여 계속 분석을 하지만,
안전하게 분석하는 분석기를 design하면 될 것 같습니다
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
윤주영



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

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

에러를 고려하여 분석한다는건 어떤 의미인가요?
예를들어 에러가 발생하는 명령은 없었던 것으로 간주하고 진행하라는 의미인가요?
만약 if 문의 조건에 잘못된 식이 있다면 이경우는 if문을 아예 무시해야할지, 아니면 top으로 간주하여 두 방향 모두 진행해야할지도 애매하군요.

그리고 추가질문,
if나 while에서는 실행되지 않는 코드가 존재합니다.
어러한 코드를 파악할 수 있다면 해당 코드에 대한 분석은 하지 않는것이 옳을까요, 아니면 empty memory로부터 분석을 수행하는게 옳을까요?
위로
사용자 정보 보기 비밀 메시지 보내기
진민식



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

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

인용:
에러를 고려하여 분석한다는건 어떤 의미인가요?
예를들어 에러가 발생하는 명령은 없었던 것으로 간주하고 진행하라는 의미인가요?
만약 if 문의 조건에 잘못된 식이 있다면 이경우는 if문을 아예 무시해야할지, 아니면 top으로 간주하여 두 방향 모두 진행해야할지도 애매하군요.


이 경우 분석기를 사용하는 입장에서 생각해보시고 좋은 방향으로
정하시면 될 것 같습니다.(극단적으로는 분석을 멈추는 것에서 부터,
위의 경우처럼, top으로 간주하고 두 방향 모두 진행하는 경우까지
여러 방법이 있을 것 입니다.)


인용:
그리고 추가질문,
if나 while에서는 실행되지 않는 코드가 존재합니다.
어러한 코드를 파악할 수 있다면 해당 코드에 대한 분석은 하지 않는것이 옳을까요, 아니면 empty memory로부터 분석을 수행하는게 옳을까요?


분석기의 목표는 sound하면서 정확한 분석기를 만드는 것입니다.
if 같은 곳에서 한쪽으로 진행되지 않는 다는 것을 알 수 있으면,
그 path 로는 분석을 하지 않는 것이 sound 하면서 가장
정확한 분석이 될 것 같습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 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