سؤال

أقوم حاليًا باللعب قليلاً مع المجمّع على وحدة التحكم الدقيقة Cortex-M3.لست متأكدًا مما إذا كان هذا مهمًا، ولكن تفضل.

أحتاج إلى كتابة قيمة إلى عنوان معين في الذاكرة.وهنا ما حاولت:

LDR     R4, =__cs3_interrupt_vector_cortex_m
STR     R4, [=VTOR]

ولكن يبدو أنني بحاجة إلى الرجوع إلى عنوان VTOR المتعلق بسجل الكمبيوتر.السؤال هو ما إذا كانت هناك طريقة لعدم الإشارة إلى العنوان النسبي والسماح بذلك تلقائيًا (بحيث يبدو بشكل أساسي مثل نهجي).

أنا أستخدم مجمع جنو.

هل كانت مفيدة؟

المحلول

تحتاج إلى تحميل عنوان الوجهة إلى السجل.أفترض ذلك VTOR هو عنوان الذاكرة أو مؤشر "C" و __cs3_interrupt_vector_cortex_m هو ثابت.أي أنك ترغب في كتابة ثابت 32 بت إلى عنوان ما.إذا كان هذا هو الحال إذن،

 ; Get value __cs3_interrupt_vector_cortex_m to r4
 ldr r4, =__cs3_interrupt_vector_cortex_m 
 ldr r5, =VTOR ; address 'VTOR' to r5.
 str r4, [r5]  ; write the constant to 'VTOR' address.

ARM/Thumb/Thumb2 هو أ مخزن التحميل بنيان.لا يمكنك استخدام معاملات الذاكرة في تعليمات التحميل والتخزين.يعمل هذا على تبسيط تصميم وحدة المعالجة المركزية، ولكنه يختلف عن المجمّع M68K وx86.

بناء الجملة ldr rX, =val تم شرحه في صفحات معلومات مجمع Gnu.بشكل عام سوف يتحول إلى ما يلي ،

ldr   rX, [pc, #offset]
...
offset: .word val ; your constant is stored here.

ال المرجع الزائف .ltorg يخبر المجمّع بتفريغ الجدول الحرفي؛ال عوض جزء من الكود أعلاه.يمكنك إضافة .ltorg في أي مكان بين الإجراءات الفرعية، وما إلى ذلك.

لا يمكنك استخدام بناء الجملة str r4,[=VTOR] كما يساوي بناء الجملة هو مجرد اختصار للاستخدام مع ldr.على سبيل المثال،

ldr   rX,=7          ; is really 'mov rx,#7' in all modes.
ldr   rX,=0xff       ; is 'mov rx,#0xff' for ARM and '[pc,#offset]' for thumb.
ldr   rx,=0x12345678 ; will use the [pc, #offset] for all modes.

يمكنك استخدام ال ldr rX,=VTOR بناء الجملة للحصول على عنوان التسجيل.ثم يستغرق الأمر تعليمات أخرى مثل str rY, [rX] للكتابة فعلا إلى هذا العنوان.

يتم ترميز الثوابت داخل التعليمات وبالتالي فإن النطاق الثابت محدود للغاية خاصة في إبهام وضع.أعتقد أنك تستخدم الإبهام2 والتي قد يكون لها نطاق أكبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top