Limit operand to a set of physical registers
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
Hướng nghiên cứu
Bắt đầu bằng cách xem xét các dạng ràng buộc Operand (reg_def, reg_use, reg_fixed_def và reg_fixed_use) cũng như cách MachineEnv biểu diễn các thanh ghi vật lý. So sánh giới hạn thanh ghi byte 32-bit của x86 được mô tả cho setcc với các ISA hiện được hỗ trợ. Được xem là hoàn tất khi có thể biểu diễn một tập hữu hạn các thanh ghi vật lý và hành vi cấp phát của tập đó được kiểm thử.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
It seems like there are currently two options when expressing which registers an Operand can use:
- use
reg_def/reg_use/..., in this case the operand can be allocated to any physical register. - use
reg_fixed_def/reg_fixed_use, in this case the operand can only be a single physical register.
This does not seem to cover the case where only of a limited set of physical registers can be used as an operand.
This is often the case on x86 (32-bit), where some of the general purpose registers don't expose their lower 8 bits as a pseudoregister. This means that setcc and other instructions dealing with a byte can only use the first 4 registers, not eg. esi.
My current workaround is to always use fixed operands for these instructions, but that is a bit too limiting. The other solution is to completely remove the additional registers from the MachineEnv, but that has even bigger drawbacks. Is there a better solution? It seems none of the ISAs supported by wasmtime have this issue, so I can't steal any ideas there.
- Ngôn ngữ chính
- Rust
- Star
- 265
- Fork
- 55
- Merge trung bình
- 10 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 1
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của bytecodealliance/regalloc2
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
bytecodealliance/regalloc2#265 · 9 bình luận ·
-
Modeling subregister aliasingĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
bytecodealliance/regalloc2#247 · 3 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
bytecodealliance/regalloc2#206 · 2 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
bytecodealliance/regalloc2#194 · 7 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
bytecodealliance/regalloc2#191 · 3 bình luận ·
Tất cả issue của bytecodealliance/regalloc2
Issue tương tự
-
agent/sec-check hive/hive-school-tunaos security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Sovereign-Labs/sovereign-sdk#3070 ·
-
Accepts Invalid URLĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area:prove bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Chelis-Lang/chelis#3317 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[macOS Desktop] New sidebar hover navigation accidentally switches sections while reaching a chatĐang mởapp bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày