Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C/C++ कोड को असेंबली भाषा में बदलना


GCC का -S फ्लैग सोर्स कोड से असेंबली आउटपुट (.s फाइल) जनरेट करता है।

कमांड

gcc -S program.c        # C के लिए
g++ -S program.cpp      # C++ के लिए
gcc -S -masm=intel program.c  # इंटेल सिंटैक्स (डिफॉल्ट AT&T)

उदाहरण सोर्स

#include <iostream>
using namespace std;

int main() {
    int x = 50, y = 60, sum;
    sum = x + y;
    cout << "Sum is: " << sum << endl;
    return 0;
}

असेंबली आउटपुट (x86-64, AT&T सिंटैक्स, सरलीकृत)

.file   "test.cpp"
.text
.globl  main
.type   main, @function
main:
.LFB0:
    pushq   %rbp
    movq    %rsp, %rbp
    subq    $16, %rsp
    movl    $50, -12(%rbp)    # x = 50
    movl    $60, -8(%rbp)     # y = 60
    movl    -12(%rbp), %edx
    movl    -8(%rbp), %eax
    addl    %edx, %eax        # sum = x + y
    movl    %eax, -4(%rbp)
    leaq    .LC0(%rip), %rsi  # "Sum is: "
    leaq    _ZSt4cout(%rip), %rdi
    call    _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
    movl    -4(%rbp), %esi
    movq    %rax, %rdi
    call    _ZNSolsEi@PLT     # operator<<(int)
    movq    _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GOTPCREL(%rip), %rax
    movq    %rax, %rsi
    movq    %rax, %rdi
    call    _ZNSolsEPFRSoS_E@PLT
    movl    $0, %eax
    leave
    ret

मुख्य निर्देश समझाए गए

उपयोग के मामले

  • कंपाइलर ऑप्टिमाइज़ेशन समझने के लिए।
  • प्रदर्शन बॉटलनेक्स पहचानने के लिए।
  • कॉलिंग कन्वेंशन सीखने के लिए।
  • इनलाइनिंग, वेक्टराइजेशन, लूप अनरोलिंग जांचने के लिए।

ऑप्टिमाइज़ेशन लेवल के साथ

gcc -O2 -S program.c  # ऑप्टिमाइज़्ड असेंबली
gcc -O3 -S program.c  # अधिक ऑप्टिमाइज़ेशन
  1. - C/C++ में memcpy() फंक्शन

    इस लेख में हम C++ STL में memcpy() फंक्शन के कार्य, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। memcpy() क्या है? memcpy() फंक्शन C++ STL में एक इनबिल्ट फंक्शन है, जो हेडर फाइल में परिभाषित है। memcpy() फंक्शन का उपयोग मेमोरी के ब्लॉक्स को कॉपी करने के लिए किया जाता है। इस फंक्शन का उपयोग एक मेमोरी लोकेश

  1. - C/C++ में स्ट्रिंग को इंटीजर एरे में बदलना

    इस ट्यूटोरियल में, हम C/C++ में स्ट्रिंग को इंटीजर एरे में बदलने के तरीके को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हम एक नया एरे बनाएंगे। दी गई स्ट्रिंग को पार करेंगे, यदि कैरेक्टर कॉमा , है, तो हम अगले कैरेक्टर पर चले जाते हैं अन्यथा इसे नए एरे में जोड़ देते हैं। उदाहरण #include usin

  1. C/C++ में AA ट्रीज C/C++ में AA ट्रीज

    कंप्यूटर साइंस में AA ट्री को संतुलित ट्री के एक रूप के रूप में परिभाषित किया गया है जिसे क्रमबद्ध डेटा को कुशलतापूर्वक स्टोर और पुनर्प्राप्त करने के लिए लागू किया जाता है। AA ट्रीज को रेड-ब्लैक ट्री के एक रूपांतर के रूप में माना जाता है, एक प्रकार का बाइनरी सर्च ट्री जो प्रविष्टियों के कुशल जोड़ और

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
निर्देशअर्थ
pushq %rbpबेस पॉइंटर सेव करें
movq %rsp, %rbpनया स्टैक फ्रेम सेटअप
subq $16, %rspलोकल वेरिएबल्स के लिए स्पेस
movl $50, -12(%rbp)x = 50 स्टोर करें
addl %edx, %eaxx + y जोड़ें
call ...फंक्शन कॉल (cout ऑपरेटर्स)
leave / retस्टैक फ्रेम रिस्टोर, रिटर्न