snu-sf-class / swpp202401

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

[Project] Interpreter signed comparison error. #104

Open sbkim28 opened 1 month ago

sbkim28 commented 1 month ago

안녕하세요, Interpreter에서 signed comparison에 문제가 있는 것 같아서 이를 제보하고자 합니다.

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

#include <stdint.h>
#include <stdlib.h>

int64_t read();
void write(int64_t);

int main() {
  int64_t n = read();
  for (int i = n - 1; i >= 0; --i) {
    write(i);
    if (i == -1) break;
  }
}

이를 제공해주신 skeleton을 이용해서 컴파일 하고 인터프리터를 이용해 실행하고자 하였습니다. 그런데, 입력으로 1을 넣었더니 다음과 같은 출력이 나왔습니다.

0
18446744073709551615

i=-1일 때 signed integer를 comparison하는 과정에서 문제가 생겨 for loop를 빠져나가지 못하고 문제를 일으키는 것 같습니다. 해당 문제를 확인해주셨으면 합니다.

감사합니다.

Hyun2023 commented 1 month ago

혹시 최신 패치에서 해결되셨나요? 아니라면 어셈블리 코드를 올려주시면 감사하겠습니다.

sbkim28 commented 1 month ago

네, 최신 패치에서 이 문제가 해결된 것 같습니다. 빠르게 처리해주셔서 감사합니다.