2012-09-29 8 views
5

इस 64 एनएएसएम-वाक्य रचना विधानसभा पर विचार करें:यह मशीन कोड "inc qword [rsp]" के लिए क्यों उत्पन्न होता है?

inc qword [rax] 
inc qword [rcx] 
inc qword [rdx] 
inc qword [rbx] 
inc qword [rsp] 
inc qword [rbp] 
inc qword [rsi] 
inc qword [rdi] 

एनएएसएम साथ कोडांतरण (और GNU ld के साथ जोड़ने) के बाद, objdump -d निम्नलिखित रिपोर्ट:

4000b0:  48 ff 00    incq (%rax) 
4000b3:  48 ff 01    incq (%rcx) 
4000b6:  48 ff 02    incq (%rdx) 
4000b9:  48 ff 03    incq (%rbx) 
4000bc:  48 ff 04 24    incq (%rsp) 
4000c0:  48 ff 45 00    incq 0x0(%rbp) 
4000c4:  48 ff 06    incq (%rsi) 
4000c7:  48 ff 07    incq (%rdi) 

कोड inc qword [rbp] के लिए उत्पन्न के बाद से समझ में आता है मॉड फ़ील्ड सेट है। हालांकि, मैं यह नहीं समझ सकता कि 24inc qword [rsp] को इकट्ठा करते समय कहां से आता है। मैं coder64 #xFF देख रहा हूं और मुझे कुछ भी नहीं बताता है कि 24 उत्पन्न किए जाने चाहिए। मैं स्पष्ट रूप से एक उच्च स्तर पर कुछ याद कर रहा हूँ।

उत्तर

7

कोई [आरएसपी] एमडीआर/एम बाइट नहीं है। तो यह [एसआईबी] मॉडआर/एम का उपयोग करता है। एसआईबी का मतलब है कि sib byte है, और 0x24 आरएसपी के लिए सिब बाइट है।

+0

बिल्कुल सही, धन्यवाद! – jli

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