2016-10-30 10 views
5

मैं असेंबली भाषा सीख रहा हूं और मैं FWORD (6 बाइट्स) पर आया था। मुझे उत्सुकता है कि F क्या है? विकी पेज पर कुछ भी नहीं है और एमएसडीएन पर इसके बारे में कुछ भी नहीं है।एफडब्ल्यूओआर में एफ क्या खड़ा है?

https://en.wikipedia.org/wiki/FWord

https://msdn.microsoft.com/en-us/library/26c4cbza.aspx

+0

यह 'FAR' के लिए खड़ा है – Jester

उत्तर

5

पत्र 'एफ' FWORD में 32-बिट दूर सूचक है, जो FWORD प्रकार के लिए प्राथमिक उपयोग है के रूप में शब्द "अब तक" के लिए खड़ा है। 32-बिट दूर पॉइंटर में पहले 4 बाइट्स में 32-बिट ऑफसेट होता है, और पिछले 2 बाइट्स में 16-बिट चयनकर्ता होता है।

आमतौर पर 32-बिट दूर पॉइंटर्स के लिए अधिक उपयोग नहीं होता है, क्योंकि अधिकांश 32-बिट ऑपरेटिंग सिस्टम सभी चयनकर्ताओं के माध्यम से संपूर्ण 32-बिट 4 जी पता स्थान को सुलभ बनाते हैं। आप उन्हें कोड सेगमेंट स्विच करने के लिए निम्न-स्तरीय ऑपरेटिंग सिस्टम कोड में उपयोग कर सकते हैं क्योंकि सीएस चयनकर्ता कोड निष्पादित करने वाले विशेषाधिकार स्तर को निर्धारित करता है, साथ ही कोड 16-बिट, 32-बिट या 64-बिट मोड में निष्पादित करता है या नहीं।

+0

धन्यवाद एक बहुत, अब मैं कैसे रियल मोड से सुरक्षित मोड और gdtr (ग्लोबल डिस्क्रिप्टर तालिका करने के लिए स्विच करने के लिए सीख रहा हूँ रजिस्टर) 6 बाइट्स है। 'lgdt fword ptr gdtr' –

+2

@HrantCharchyan उस स्थिति में एलजीडीटी निर्देश के लिए मेमोरी ऑपरेंड 6 बाइट लंबा है, लेकिन यह बहुत दूर नहीं है। इसके बजाय यह निचले 2 बाइट्स में 16-बिट सीमा और उच्च 4 बाइट्स में 32-बिट आधार है। –

+0

@HrantCharchyan यदि आप सी संरचना का उपयोग करते हैं तो misalignment के लिए देखें। 16 बिट लंबाई 'lgdt 'ऑपरेंड में 32 बिट बेस से पहले आता है। यदि आप सावधान नहीं हैं, तो 32 बिट सीमा पर बेस फ़ील्ड को संरेखित करने के लिए लंबाई के बाद संकलक दो पैडिंग बाइट जोड़ देगा। या तो बेस के लिए "कम"/"उच्च" 16 बिट मानों की एक जोड़ी का उपयोग करें, या अपने कंपाइलर को बताएं कि संरचना पैक की गई है। – doug65536

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