로파스 Site Admin
가입: 2012년 9월 9일 올린 글: 280
|
올려짐: 2017년5월4일 16:15 주제: 숙제3 공지 및 뼈대코드입니다.(0506 수정) |
|
|
안녕하세요 여러분.
숙제 3 공지사항 및 뼈대코드입니다.
수업슬라이드 10-1의 명령형 언어 프로그램의 요약해석 단원에 있는 언어를 대상으로
1번문제 : 구간 도메인(interval domain)상에서 정적분석하는 과제입니다.
2번문제 : 상수 도메인상에서 정적분석하는 과제입니다.
숙제1의 4번 문제에서 다뤄보셨던 K-언어에서 while문이 추가되고 not, and, or 연산자가 추가되었습니다. 2번 문제에서는 *과 & 문법도 사용하실 수 있습니다. 문법 관련해서는 뼈대코드의 README를 참고하시면 되겠습니다.
뼈대코드에 도메인의 타입 등이 명시되어있으며 주석을 통해 대강의 가이드라인을 잡아두었으니 숙제에 도움되었으면 합니다.
팁을 한가지 드리자면, assume같은 경우 높은 정확도를 가지도록 구현하는 것이 매우 어렵기 때문에 특수한 상황에 대해서만 정교하게 처리하고 그 외의 상황에서는 안전하게 구현하는 것이 좋습니다. 예를들어 변수, (변수 < 상수), (상수 < 변수) 혹은 이것들이 not, and or로 묶인 꼴의 조건문에 대한 assume만 정교하게 구현하시고 나머지는 안전하게만 구현하시면 적당할 것입니다.
참고로 뼈대코드중 compare_mem은 함수 타입의 메모리끼리 같은지를 비교하기 위한 함수입니다. used_varlist 함수를 이용해 프로그램 내에서 쓰이는 변수의 리스트를 가지고 해당 변수들의 값이 모두 같은지 체크하는 일을 합니다.
또한 pp_memory 함수는 varlist에 해당하는 변수들의 값을 프롬프트에 출력해서 보여줍니다. 디버깅 및 테스트에 도움되시기 바랍니다. 채점도 이 함수의 출력값에 의해 진행될 예정입니다.
더 궁금하신 점은 메일이나 답글주시기 바랍니다.
-조교 이동권 드림
http://ropas.snu.ac.kr/~ta/4541.664A/17/hw3/K_itv_skel.zip
http://ropas.snu.ac.kr/~ta/4541.664A/17/hw3/K_itv_loc_skel.zip |
|