2013-12-13 7 views
5

मैंने सी में निम्नलिखित कोड लिखा है ताकि उस से असेंबलर कोड तैयार किया जा सके और असेंबलर के बारे में कुछ सीख सकें।निम्नलिखित असेंबलर-कोड लाइन का अर्थ क्या है?

मैं निश्चित रूप से एक नमस्ते दुनिया के साथ शुरू, और एक लाइन में, वहाँ पीछा कर रहा है:

mov DWORD PTR[esp], OFFSET FLAT:.LCO 

और के बारे में LC0, यह कहते हैं:

.string "Hello World!" 
    .text 
    .globl main 
    .type main,@function 

तो, और मैं अपने आप से पूछा, OFFSET FLAT:.LCO के साथ लाइन का अर्थ क्या है? क्या मैं सही हूं, जब मैं कहता हूं कि स्ट्रिंग को इंगित करने वाले पॉइंटर की तरह कुछ esp पर दिया गया है? तो esp अब स्ट्रिंग हैलो वर्ल्ड को इंगित कर रहा है?

क्या यह सही है? क्योंकि यह तार्किक होगा।

उत्तर

3
mov DWORD PTR[esp], OFFSET FLAT:.LCO 

4 बाइट्स चलाता है, यह निर्दिष्ट पता है। ईसीपी द्वारा निर्दिष्ट स्मृति स्थान पर एलसीओ।

  • एलसीओ स्मृति पता है जहां स्ट्रिंग "हैलो वर्ल्ड!" प्राणियों।
  • ईएसपी ढेर के शीर्ष है, इस कोड को मानता है कि ईएसपी में मूल्य एक स्मृति स्थान है
  • "फ्लैट" पता स्थान को दर्शाता है: http://en.wikipedia.org/wiki/Flat_memory_model
  • .text संकेतों कोड की शुरुआत खंड: http://en.wikipedia.org/wiki/Code_segment
संबंधित मुद्दे