snu-sf-class / swpp202401

Principles and Practices of Software Development Main Repository
14 stars 4 forks source link

[Project] Interpreter crashes when '$' is used #103

Open sbkim28 opened 6 months ago

sbkim28 commented 6 months ago

안녕하세요, Interpreter가 crash하는 상황을 발견해서 이를 제보하고자 합니다.

다음은 제가 임의로 작성한 llvm ir 코드입니다.

define dso_local i32 @main() #0 {
entry:
  %call = call i64 (...) @read()
  %call1 = call i64 @"$test"(i64 noundef %call)
  call void @write(i64 noundef %call1)
  ret i32 0
}

define i64 @"$test"(i64 noundef %0) #0 {
entry:
  %1 = add i64 %0, 1
  ret i64 %1
}

이를 어셈블리로 변환한 결과는 다음과 같습니다.

start main 0:
.entry:
r1 = call read
r1 = call $test r1
call write r1
r1 = const 0
ret r1
end main

start $test 1:
.entry:
r1 = const 1
r1 = add arg1 r1 64
ret r1
end $test

그런데 해당 코드를 실행시키면 interpreter에서 panic이 발생합니다. '$' 때문에 문제가 생기는 것으로 추정되는데, 해당 문제를 확인해주셨으면 합니다.

감사합니다.

Hyun2023 commented 6 months ago

어셈블리 스펙을 다시한번 확인 부탁드립니다. 해당 함수명은 문법적으로 허용되지 않습니다.