Chúng tôi đang sử dụng phiên bản Lite của trình biên dịch PIC MicroChip vì vậy có thể đó là lý do, nhưng sự thay đổi một bit đơn giản này đang tạo ra một vòng lặp trong đó không cần thiết. Vì số lượng ca là 1 (một hằng số), tôi mong muốn trình biên dịch sẽ không tạo ra vòng lặp tối ưu cho một vòng lặp.
Có một công tắc tối ưu hóa trình biên dịch sẽ làm giảm vòng lặp? Đây là mã cho ca làm việc:
long foo; // a 32-bit value
// Shift foo one bit.
// A one-iteration loop is created!
foo >>= 1;
Và đây là mã do trình biên dịch tạo ra. Như bạn có thể thấy, sự thay đổi được gói bằng một vòng lặp một lần.
07F6 3001 MOVLW 0x1
07F7 00F2 MOVWF 0x72
07F8 37F6 ASRF 0x76, F
07F9 0CF5 RRF 0x75, F
07FA 0CF4 RRF 0x74, F
07FB 0CF3 RRF 0x73, F
07FC 0BF2 DECFSZ 0x72, F
BIÊN TẬP
Phiên bản trình biên dịch: Trình biên dịch HI-TECH C cho PIC10 / 12/16 MCU (Chế độ Lite) V9.81