इसलिए आज सुबह मैंने असेंबली के बारे में एक भ्रमित सवाल पोस्ट किया और मुझे कुछ महान वास्तविक मदद मिली, जिसे मैं वास्तव में सराहना करता हूं।असेंबली - .डेटा, .code, और रजिस्टर्स ...?
और अब मैं असेंबली में शामिल होना शुरू कर रहा हूं और यह समझने लगा हूं कि यह कैसे काम करता है।
जो चीजें मुझे लगता है मैं समझता हूं कि मैं ढेर, इंटरप्ट्स, बाइनरी/हेक्स, और सामान्य रूप से मूलभूत परिचालनों में से अधिकांश (jmp, push, mov, आदि) को समझता हूं।
- वास्तव में क्या .data खंड में हो रहा है: -
अवधारणाओं कि मैं समझता हूँ के लिए संघर्ष कर रहा हूँ और नीचे हैं मदद करना चाहते हैं यदि आप निम्न में से किसी को संबोधित कर सकता है यह एक बड़ी मदद होगी ? क्या वे चर हैं जिन्हें हम घोषित कर रहे हैं?
- यदि हां, तो क्या हम बाद में कोड अनुभाग में चर घोषित कर सकते हैं? यदि नहीं, तो क्यों नहीं? यदि हां, तो हम कैसे और फिर डेटा अनुभाग का उपयोग क्यों करते हैं?
- एक रजिस्टर क्या है? यह एक चर से तुलना कैसे करता है? मेरा मतलब है कि मुझे पता है कि यह एक ऐसा स्थान है जो जानकारी का एक छोटा टुकड़ा संग्रहीत करता है ... लेकिन यह मेरे लिए एक चर की तरह लगता है।
- मैं एक सरणी कैसे बना सकता हूं? मुझे पता है कि यह यादृच्छिक लगता है, लेकिन मैं उत्सुक हूं कि मैं इस तरह कुछ करने के बारे में कैसे जाऊंगा।
- क्या प्रत्येक रजिस्टर के लिए सामान्य प्रथाओं की एक सूची है जिसके लिए प्रत्येक रजिस्टर का उपयोग किया जाना चाहिए? मैं अभी भी उन्हें पूरी तरह से नहीं प्राप्त करता हूं, लेकिन कुछ लोगों ने यह कहते हुए देखा है कि उदाहरण के लिए, एक निश्चित रजिस्टर का उपयोग प्रक्रियाओं से 'वापसी मूल्य' को स्टोर करने के लिए किया जाना चाहिए - क्या ऐसी प्रथाओं की व्यापक या कम से कम जानकारीपूर्ण सूची है?
- असेंबली सीखने के कारणों में से एक यह है कि मेरे उच्च स्तर कोड के पीछे क्या हो रहा है, यह बेहतर ढंग से समझना है। इसे ध्यान में रखते हुए - जब मैं सी ++ में प्रोग्रामिंग कर रहा हूं, तो मैं अक्सर ढेर और ढेर के बारे में सोच रहा हूं। असेंबली में मुझे पता है कि ढेर क्या है - 'ढेर' कहां है?
कुछ जानकारी: मैं WinAsm साथ masm32 उपयोग कर रहा हूँ एक IDE के रूप में है, और मैं मैं ऐसे C++/जावा के रूप में उच्च स्तर भाषाओं में पूर्व अनुभव प्रोग्रामिंग का एक बहुत कुछ है विंडोज 7 पर काम कर रहा हूँ।
संपादित करें: हर किसी की मदद के लिए धन्यवाद, सामान्य रूप से बेहद जानकारीपूर्ण! उत्तम सामग्री! हालांकि एक आखिरी बात - मैं सोच रहा हूं कि स्टैक पॉइंटर, और बेस पॉइंटर, या ईएसपी और ईबीपी के बीच क्या अंतर है। क्या कोई मेरी मदद कर सकता है?
संपादित करें: मुझे लगता है कि मुझे अब मिल गया है ... ईएसपी हमेशा ढेर के शीर्ष पर इंगित करता है। हालांकि, आप जो चाहें ईबीपी को इंगित कर सकते हैं। ईएसपी स्वचालित रूप से संभाला जाता है लेकिन आप जो भी चाहते हैं वह ईबीपी के साथ कर सकते हैं। उदाहरण के लिए:
push 6
push 5
push 4
mov EBP, ESP
push 3
push 2
इस परिदृश्य में, ईबीपी अब पता 4 पकड़े के लिए अंक, लेकिन ईएसपी अब पता पकड़े 2.
कोई वास्तविक आवेदन 6, 5 में के लिए अंक, और 4 हो सकता था फ़ंक्शन तर्क, जबकि 3 और 2 उस फ़ंक्शन के भीतर स्थानीय चर हो सकते हैं।
क्या मैं पूछ सकता हूं कि क्या आपके पास कोई पुस्तक है, और यदि आप करते हैं, तो कौन सी पुस्तक हो सकती है? :) –
नहीं, क्षमा करें! बस इंटरनेट। http://stackoverflow.com/questions/2352048/assembly-32-bit-vs-64-bit -> उस पोस्ट में मैंने उन संसाधनों की रूपरेखा दी है जिनका मैं उपयोग कर रहा हूं। मैंने आज विधानसभा सीखना शुरू कर दिया है, इसलिए मैं उस सूची पर काम करना जारी रखूंगा क्योंकि मैं अधिक संसाधन इकट्ठा करता हूं। – Cam
मैं भी असेंबली सीखना शुरू कर रहा हूं। "पीडीएफ प्रोग्रामिंग" नामक मुफ्त पीडीएफ पुस्तक है जो काफी अच्छी लगती है। यह अभी मेरा मुख्य संसाधन है। – morgancodes