2008-11-27 23 views
6

मैं उपयोगकर्ता R13 और R14 तक कैसे पहुंच सकता हूं जो पर्यवेक्षक मोड में प्रवेश किए जाने पर सहेजे जाते हैं? मैं एक एआरएम 7TDMI का उपयोग कर रहा हूँ।एआरएम। पर्यवेक्षक मोड से उपयोगकर्ता R13 और R14 तक पहुंचें

आईई। मैं पर्यवेक्षक आर 14 तक नहीं पहुंचना चाहता हूं जिसमें अब उपयोगकर्ता मोड में वापसी पता है, इसके बजाय उपयोगकर्ता मोड के लिंक रजिस्टर का मूल्य चाहते हैं। यह एक डीबगर का हिस्सा है जिसे मैं लिख रहा हूं।

क्या इन रजिस्टरों के लिए विशेष उपनाम हैं?

धन्यवाद

उत्तर

9

मैं अपने विशिष्ट प्रश्न के लिए उत्तर का वर्णन करता हूँ, लेकिन एक ही दृष्टिकोण के रूप में अच्छी तरह से अन्य साधनों के लिए लागू होता है।

आपको सिस्टम मोड में सीपीएसआर में मोड बिट्स को बदलकर प्रोसेसर मोड को बदलने की आवश्यकता होगी। यह आपको उपयोगकर्ता मोड के एसपी/एलआर (आर 13 & आर 14) तक पहुंच प्रदान करेगा। याद रखें कि सिस्टम मोड विशेषाधिकार प्राप्त है, लेकिन इसके R13 और R14 उपयोगकर्ता मोड के R13 और R14 के समान हैं।

एक बार जब आप सिस्टम मोड में हों, तो R13 और R14 पढ़ें और उन्हें कहां रखें। फिर बस मोड बिट्स को अपने पिछले मोड पर स्विच करें (मुझे विश्वास है कि आपके उदाहरण में पर्यवेक्षक मोड था) और आप जाने के लिए अच्छे हैं।

ध्यान दें कि हमने पर्यवेक्षक से उपयोगकर्ता मोड में स्विच नहीं किया है। यदि आप पर्यवेक्षक से उपयोगकर्ता तक स्विच करते हैं, आप पर्यवेक्षक मोड पर वापस नहीं जा सके। (अन्यथा उपयोगकर्ता कोड बढ़ते विशेषाधिकार से कोई सुरक्षा नहीं होगी)। यही कारण है कि हमने सिस्टम मोड का उपयोग किया - सिस्टम मोड विशेषाधिकार प्राप्त है, लेकिन रजिस्ट्रार उपयोगकर्ता मोड के समान हैं।

आप सीपीएसआर में मोड बिट्स में हेरफेर करके इच्छानुसार किसी भी विशेषाधिकार प्राप्त मोड के बीच स्विच कर सकते हैं। मुझे लगता है कि वे कम 5 बिट्स हैं? मैं सड़क पर हूं & मेरी उंगलियों पर जानकारी नहीं है। अन्यथा मैंने ऊपर वर्णित किए गए कार्यों के लिए आपको असेंबली कोड प्रदान किया होगा। असल में, अगर आप अपनी छाती पर कुछ बाल रखना चाहते हैं, तो मैंने जो कुछ दिया है उसे ले लो, इसे कार्यान्वित करें, इसका परीक्षण करें, और इसे यहां पोस्ट करें। :- डी

(एक चीज़ जो मुझे "सामान्य मामला" (आपका बहुत विशिष्ट है) के लिए जोड़ना चाहिए - आप "जहां से आए थे" देखने के लिए एसपीएसआर की जांच कर सकते हैं - और यह निर्धारित करने के लिए कि आप किस मोड को निर्धारित करते हैं स्विच करने की आवश्यकता है।)

वैसे, मैंने हाल ही में अपने ग्राहकों में से एक के लिए यह किया .... छोटी दुनिया, मुझे लगता है।

+0

वाह धन्यवाद। मैंने कभी नहीं देखा कि उपयोगकर्ता मोड और सिस्टम मोड ने एक ही रजिस्ट्रार साझा किया है! मैं कोड पर क्रैकिंग मिल जाएगा। मुझे डर है कि मैं इसे यहां पोस्ट नहीं कर सकता क्योंकि यह courswork के टुकड़े के लिए है - लेकिन मुझे लगता है कि आपने सिद्धांतों को बहुत अच्छी तरह से वर्णित किया है, जो अधिक महत्वपूर्ण है। – Tarski

+0

आपका स्वागत है। Coursework के साथ शुभकामनाएँ। – Dan

+0

हाय डैन, यदि एआरएम हाइप मोड में है और पीएल 1 एनएस = 1 मोड (एसवीसी) के आर 13/आर 14 को पढ़ना है तो यह कैसे किया जाएगा? – mSO

3

मैं एक बेहतर तरीका ढूंढ निकाला है: -

एक एसटीएम कर रहे हैं, अगर R15 ऑपरेंड से एक नहीं है तो^उपयोगकर्ता के मोड रजिस्टर करने के लिए पहुँच देता है। हालांकि, ऑटोइनक्रिकमेंटिंग निर्देश के भीतर काम नहीं कर रही है, और यदि आप रजिस्टर बैंक तक पहुंचना चाहते हैं तो बाद में एक एनओपी की आवश्यकता होती है।

कुछ

तरह
stmfd r13, {r13-r14}^ ;store r13 and r14 usermode 
nop 
sub r13, r13, #8  ;update stack pointer 
+0

^^ केवल एआरएमवी 6 और नए, आईआईआरसी में उपलब्ध है। –

+0

यह एक अच्छा खोज है! Http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cihcadda के अनुसार।एचटीएमएल, हालांकि, यह उपयोग "बहिष्कृत" है, हालांकि। वास्तव में यकीन नहीं है कि इसके बारे में परवाह है या नहीं। – Brendan

संबंधित मुद्दे