Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

bitfield_order and le/be prefixes do nothing on bitfields

Đang mở
#236 12 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
48/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
cpp
Lĩnh vực
compilers, devtools

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện mẫu trường bit được cung cấp bằng dữ liệu nhị phân được cung cấp trên bản sửa đổi ImHex được tham chiếu, sau đó theo dõi cách xử lý bitfield_order và các tiền tố le/be trong phần triển khai Pattern Language. Được xem là hoàn tất khi các chú thích này tạo ra thứ tự byte mong đợi hoặc bố cục trường bit bị đảo ngược, với các giá trị DDSCaps2 khác nhau như mô tả.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

tested on imhex revision https://github.com/WerWolv/ImHex/commit/c6045c7044668b5d9b6442aad837f888d4ba4933

bin file: 00 00 FE 00 00 FE 00 00

pattern:

import std.core;

bitfield DDSCaps2 {
    front: 9;
    Cubemap: 1;
    CubemapPositiveX: 1;
    CubemapNegativeX: 1;
    CubemapPositiveY: 1;
    CubemapNegativeY: 1;
    CubemapPositiveZ: 1;
    CubemapNegativeZ: 1;
    back: 16;
};

DDSCaps2 ltms[2] @ 0 [[bitfield_order(std::core::BitfieldOrder::LeastToMostSignificant, 32)]];
DDSCaps2 mtls[2] @ 0 [[bitfield_order(std::core::BitfieldOrder::MostToLeastSignificant, 32)]];
be DDSCaps2 big[2] @ 0;
le DDSCaps2 little[2] @ 0;

the values are always the same.

Image

the expected outcome is one of two outcomes, either:

  • back becomes 65024 on BE
  • bitfield layout gets reversed

neither happens.

the former is necessary for fundamental bitset usage, the latter is necessary for flag enums (such as in this case where DDSCaps2 is a flag enum.

Ngôn ngữ chính
C++
Star
276
Fork
76
Merge trung bình
2 ngày 3 giờ
Pull request đã merge (30 ngày)
9

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

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của WerWolv/PatternLanguage

Tất cả issue của WerWolv/PatternLanguage

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.