LLVM có phi hướng dẫn với lời giải thích khá kỳ lạ:gì chính xác PHI hướng dẫn nào và làm thế nào để sử dụng nó trong LLVM
Các 'phi' hướng dẫn được sử dụng để thực hiện các nút φ trong đồ thị dưới SSA đại diện cho chức năng .
Thông thường nó được sử dụng để triển khai phân nhánh. Nếu tôi hiểu chính xác, nó là cần thiết để làm cho phân tích phụ thuộc có thể và trong một số trường hợp nó có thể giúp tránh tải không cần thiết. Tuy nhiên vẫn khó để hiểu chính xác nó là gì.
Kính vạn hoa example giải thích nó khá độc đáo đối với trường hợp if
. Tuy nhiên, không rõ cách thực hiện các phép toán logic như &&
và ||
. Nếu tôi gõ như sau để online llvm biên dịch:
void main1(bool r, bool y) {
bool l = y || r;
}
ngoái, vài dòng hoàn toàn nhầm lẫn tôi:
; <label>:10 ; preds = %7, %0
%11 = phi i1 [ true, %0 ], [ %9, %7 ]
%12 = zext i1 %11 to i8
Hình như nút phi sản xuất là kết quả mà có thể được sử dụng. Và tôi đã được ấn tượng rằng nút phi chỉ xác định từ đó các giá trị đường dẫn đến.
Ai đó có thể giải thích nút Phi là gì và cách triển khai ||
với nó?
TL; Nút DR φ là biểu thức bậc ba. Người ta có thể tranh luận rằng nó không chứa điều kiện, nhưng thực sự, khi chuyển đổi sang mã cuối cùng, bạn không thể xác định bằng cách nào khác là một đối số đang hoạt động, vì vậy φ cũng phải có điều kiện. –