tôi biến đổi mã C đơn giản nhấtHiểu IR LLVM đơn giản nhất
#include <stdio.h>
int main()
{
return 0;
}
để LLVM IR của nó, sử dụng
clang -emit-llvm -S hello.c
Các tạo IR là:
define i32 @main() #0 {
%1 = alloca i32, align 4
store i32 0, i32* %1
ret i32 0
}
Tuy nhiên, tôi làm không hiểu IR này. (LLVM doc giúp nhưng không nhiều cho người mới bắt đầu)
- Tại sao chúng tôi có
%1 = alloca i32, align 4
? Điều gì tương ứng với mã gốc? - Câu hỏi tương tự cho
store i32 0, i32* %1
- Alloca có nghĩa là phân bổ trên ngăn xếp (thay vì phân bổ động) không?
- 'Căn chỉnh 4' có nghĩa là gì?
Căn chỉnh cho biết hoạt động bộ nhớ phải được căn chỉnh thành 4 byte. Tôi không chắc về phần còn lại. – MariusSiuram