किसी कारण के लिए, जब मैं कोड के इस बिट संकलित करने के लिए प्रयास करते हैं, संकलक syscall.s:72:invalid constant (0x172) after fixup
का कहना है:फिक्सअप के बाद अमान्य स्थिर?
.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
मैं क्यों यह यह कर रहा है पता नहीं है। जब मैं r7
में एक छोटा स्थिर रखता हूं, तो यह ठीक काम करता है। लेकिन उच्च संख्या के साथ, यह इस त्रुटि को थूकता है। मैंने इसे mov r7, #300
और add r7, #70
करके अस्थायी रूप से ठीक कर दिया है, जो वांछित प्रभाव प्राप्त करता है। अभी भी सुनिश्चित नहीं है कि त्रुटि के कारण क्या हुआ।
मुझे एक ही समस्या है, लेकिन armv4 का उपयोग कर। मैं एक रजिस्टर में 0x0000ffff लोड करना चाहता हूँ। movw और movt इस बांह मोड में समर्थित नहीं हैं। और मैं या तो ldr r3 का उपयोग नहीं कर सकता, = # 0000ffff –
आपको ldr r3, = # 0x0000ffff not = # 0000ffff लोड करना होगा। फिक्सअप असेंबलर द्वारा नीचे है। आप बस r3, # 255 - orr r3, r3, # 65280 –
भी चला सकते हैं, मैं उस मान को रजिस्टर में नहीं डाल सकता। यह एक दिशा नहीं है, यह निरंतर है कि मैं v1 चर द्वारा दी गई स्थिति में स्मृति में स्टोर करना चाहता हूं (सी में निर्देश है: iowrite32 (v1, 0x0000FFFF)। संदेश है: वर्चुअल एड्रेस 0000ffff पर कर्नेल पेजिंग अनुरोध को संभालने में असमर्थ –