We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
datatype array는 스택에 저장되어 있지 않고, 값 static하게 결정되어 있다. 컴파일 타임에 이 값을 옮긴다(lea instruction으로).
반면 datatype pointer는 실제 array의 첫 주소 값을 담고 있다.
array 변수는 register allocation할 필요가 없다. 이를 위한 패치를 했다(dead store elimination은 여전히 할 수 있다). ad22981
한편, pointer 값 중 lea 연산으로 정해지는 것들은 static하게 무슨 값인지 알 수 있다. 이것으로 constant propagation을 하는 것을 생각해볼 수 있다. 그런데 이것은 몇몇 어려운 점이 있다.
따라서 이런 최적화는 진행하지 않기로 하였다.
The text was updated successfully, but these errors were encountered:
dim, dofs는 fb12ff4 로 constant propagation 했다.
Sorry, something went wrong.
2 <- lea 한번이 아니다. constant propagation과 조합하면 많은 주소값을 한번에 계산 가능해진다. 이를 위해선 constant 값으로 주소값(rbp와 ofs 꼴이거나 글로벌 변수)을 허용해야 한다. 그리고 + 연산을 지원해야 한다.
이 pointer constant 값은 백엔드에서 처리를 좀 해야 한다. 글로벌 변수 + 상수 문법을 어셈블리에서 지원하는지 모르겠다. 값이 참조하는 걸 부를 때는 그 값을 그대로 적고, 값 자체를 부를 때는 lea를 써야 한다.
No branches or pull requests
datatype array는 스택에 저장되어 있지 않고, 값 static하게 결정되어 있다. 컴파일 타임에 이 값을 옮긴다(lea instruction으로).
반면 datatype pointer는 실제 array의 첫 주소 값을 담고 있다.
array 변수는 register allocation할 필요가 없다. 이를 위한 패치를 했다(dead store elimination은 여전히 할 수 있다). ad22981
한편, pointer 값 중 lea 연산으로 정해지는 것들은 static하게 무슨 값인지 알 수 있다. 이것으로 constant propagation을 하는 것을 생각해볼 수 있다.
그런데 이것은 몇몇 어려운 점이 있다.
따라서 이런 최적화는 진행하지 않기로 하였다.
The text was updated successfully, but these errors were encountered: