यह एक चाल/शॉर्टकट है। उदाहरण के लिए कहते हैं कि
ldr r0,=main
क्या होगा कोडांतरक अनुदेश के पास, एक डेटा शब्द का आवंटन होगा, लेकिन शिक्षा पथ के बाहर
ldr r0,main_addr
...
b somewhere
main_addr: .data main
अब उन स्थिरांक/immediates है कि चाल का विस्तार, esp है कि नहीं कर सकते एक कदम तत्काल अनुदेश में फिट:
top:
add r1,r2,r3
ldr r0,=0x12345678
eor r1,r2,r3
eor r1,r2,r3
b top
तो एकत्रित न इकट्ठा
00000000 <top>:
0: e0821003 add r1, r2, r3
4: e59f0008 ldr r0, [pc, #8] ; 14 <top+0x14>
8: e0221003 eor r1, r2, r3
c: e0221003 eor r1, r2, r3
10: eafffffa b 0 <top>
14: 12345678 eorsne r5, r4, #125829120 ; 0x7800000
और आप देखते हैं कि असेंबलर ने आपके लिए डेटा शब्द जोड़ा है और एलडीआर को आपके लिए एक पीसी रिश्तेदार में बदल दिया है।
अब अगर आप एक तत्काल कि एक mov अनुदेश में फिट है, तो gnu के रूप में मैं उपयोग कर रहा हूँ के साथ शायद, निश्चित रूप से कोडांतरक पर निर्भर करता है, यह मेरे लिए
top:
add r1,r2,r3
ldr r0,=0x12345678
ldr r5,=1
mov r6,#1
eor r1,r2,r3
eor r1,r2,r3
b top
00000000 <top>:
0: e0821003 add r1, r2, r3
4: e59f0010 ldr r0, [pc, #16] ; 1c <top+0x1c>
8: e3a05001 mov r5, #1
c: e3a06001 mov r6, #1
10: e0221003 eor r1, r2, r3
14: e0221003 eor r1, r2, r3
18: eafffff8 b 0 <top>
1c: 12345678 eorsne r5, r4, #125829120 ; 0x7800000
तो एक mov में बदल गया का उपयोग
यह मूल रूप से एक टाइपिंग शॉर्टकट है, समझते हैं कि आप असेंबलर को लगातार स्थिर रहने के लिए एक जगह खोजने की शक्ति दे रहे हैं, जो आमतौर पर एक अच्छी नौकरी करता है, कभी-कभी शिकायत करता है, यह सुनिश्चित नहीं करता कि मैंने इसे सुरक्षित रूप से करने में असफल रहा है या नहीं। कभी-कभी आपको एक जगह खोजने के लिए असेंबलर को प्रोत्साहित करने के लिए कोड में .ltorg या .pool की आवश्यकता होती है।
एक प्रासंगिक [एआरएम ब्लॉग पोस्ट] (http://community.arm.com/groups/processors/blog/2010/07/27/how-to-load-constants-in-assembly-for-arm-architecture)। –
ए [फोरम थ्रेड] (https://www.raspberrypi.org/forums/viewtopic.php?और टी = 16528) बिल्कुल वही प्रश्न पूछ रहे हैं। –