KumohYuJung / Compiler

Study MiniC&Ucode
MIT License
4 stars 1 forks source link

ucode generator 가 완성되었습니다. #15

Open tyburn117 opened 8 years ago

tyburn117 commented 8 years ago

여러가지가 수정되었습니다..

  1. for, switch의 파싱 방법이 조금 수정되었습니다. (minic.y 바뀜)
  2. switch문에 non-terminal재개편으로 인하여 minic_ast.h, minic_ast.c 파일 또한 변경되었습니다.
  3. FlowTable은 흐름제어(break, continue)을 위하여 존재합니다. 소스코드 볼때 참고 바랍니다.
  4. 컴파일과 동시에 실행해 볼 수 있습니다. parser/compileTest 폴더에 들어가면 execute.sh 쉘 스크립트가 존재합니다. 실행방법은 다음과 같습니다 ---> ./execute.sh [파일명] 실행 후 폴더가 생기며 그 폴더 안에 ast, uco, lst파일이 생기므로 필요 시 참고바랍니다.
yunheur commented 8 years ago

소스코드 void main() { int i, arr[11]; for(i = 0; i < 10; i++) { read(arr[i]); } for(i = 0; i < 10; i++) { write(arr[i]); } }

실행 결과 $ ./execute.sh for_test2.mc for_test2 == Assembling ... == == Executing ... == == Result == 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0

yunheur commented 8 years ago

소스코드 void main() { int i, arr[11]; i = 0; while(i < 10){
read(arr[i]); i++; } i = 0; while(i < 10){ write(arr[i]); i++; } } 실행결과 while_test == Assembling ... == == Executing ... == == Result == 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0

yunheur commented 8 years ago

배열 문제로 보임

yunheur commented 8 years ago

while_test.uco

main proc 12 2 2 sym 2 1 1 sym 2 2 11 ldc 0 str 2 1 $$0 nop lod 2 1 ldc 10 lt fjp $$1 ldp lod 2 1 lda 2 2 add ldi call read lod 2 1 inc str 2 1 ujp $$0 $$1 nop ldc 0 str 2 1 $$2 nop lod 2 1 ldc 10 lt fjp $$3 ldp lod 2 1 lda 2 2 add ldi call write lod 2 1 inc str 2 1 ujp $$2 $$3 nop ret end bgn 0 ldp call main end

tyburn117 commented 8 years ago

문제없음 코딩 잘못함 read할 시 arr[i]를 arr+i로 고칠것