Đối với một số lý do, khi tôi cố gắng biên dịch chút mã này, trình biên dịch nói syscall.s:72:invalid constant (0x172) after fixup
:Hằng số không hợp lệ sau khi sửa lỗi?
.globl _mach_msg_trap$MACH
_mach_msg_trap$MACH:
stmfd sp!, {r4,r7}
mov r7, #370 /* this is line 72 */
svc 0
ldmfd sp!, {r4, r7}
bx lr
Tôi không biết tại sao nó làm nó. Khi tôi đặt một hằng số nhỏ hơn vào r7
, nó hoạt động tốt. Nhưng với số cao hơn, nó phun ra lỗi này. Tôi đã tạm thời sửa lỗi bằng cách thực hiện mov r7, #300
và add r7, #70
, đạt được hiệu quả mong muốn. Vẫn không chắc chắn những gì gây ra lỗi mặc dù.
Tôi có cùng vấn đề, nhưng sử dụng armv4. Tôi muốn tải 0x0000ffff trong một thanh ghi. movw và movt không được hỗ trợ trong chế độ cánh tay này. Và tôi không thể sử dụng ldr r3, = # 0000ffff –
Bạn phải tải ldr r3, = # 0x0000ffff không = # 0000ffff. Việc sửa chữa là do bộ lắp ráp. Bạn cũng có thể chỉ cần mov r3, # 255 - orr r3, r3, # 65280 –
Tôi không thể đặt giá trị đó vào thanh ghi. Nó không phải là một hướng, nó là một hằng số tôi muốn lưu trữ trong bộ nhớ, ở một vị trí được cho bởi biến v1 (trong C lệnh là: iowrite32 (v1, 0x0000FFFF) Thông báo là: Không thể xử lý yêu cầu phân trang hạt nhân tại địa chỉ ảo 0000ffff –