μετατροπή κώδικα απο C σε Assemply

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 14 Σεπ 2009 21:10

κώδικας στην C

Κώδικας: Επιλογή όλων

if &#40; z|0 & z<3 &#41;
&#123;
"compound statement"
&#125;
μπορεί να γίνει ημετατροπή??και αν ναι πιος ειναι ο κώδικας σε assemply??

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 15 Σεπ 2009 00:37

Οποιοσδήποτε C compiler μπορεί να μου βγάλει assembly?

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από soteres2002 » 15 Σεπ 2009 00:41

Όλοι οι γνωστοί μεταγλωττιστές μπορούν να σου βγάλουν έξοδο συμβολική γλώσσα. Πχ ο gcc έχει το -S flag, το οποίο λέει στον μεταγλ. να σου βγάλει έξοδο σε assembly χωρίς να κάνει σύνδεση με libc runtime library. Υπάρχει αντίστοιχη λειτουργία και στον Microsoft C/C++ compiler.

Px gia eisodo to poli gnosto programma:

Κώδικας: Επιλογή όλων

#include <stdio.h>

int main&#40;&#41; &#123;
 printf&#40;"hello world!\n"&#41;;
 return 0;
&#125;
pairneis eksodo se assembly&#720;

Κώδικας: Επιλογή όλων

        .file   "printf.c"
        .section        .rodata
.LC0&#58;
        .string "hello world!"
        .text
.globl main
        .type   main, @function
main&#58;
        leal    4&#40;%esp&#41;, %ecx
        andl    $-16, %esp
        pushl   -4&#40;%ecx&#41;
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $4, %esp
        movl    $.LC0, &#40;%esp&#41;
        call    puts
        movl    $0, %eax
        addl    $4, %esp
        popl    %ecx
        popl    %ebp
        leal    -4&#40;%ecx&#41;, %esp
        ret
        .size   main, .-main
        .ident  "GCC&#58; &#40;Ubuntu 4.3.3-5ubuntu4&#41; 4.3.3"
        .section        .note.GNU-stack,"",@progbits

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από LightForce » 15 Σεπ 2009 00:48

Σε τι πλατφόρμα και με ποιόν Assembler όμως?

Μπορείς να κάνεις compile το c πρόγραμμα σου και να ανοίξεις το εκτελέσιμο με έναν debugger όπως ο OllyDbg
Να ή ρουτίνα σου, σε Intel x86 Windows 32Bit, εκτελέσιμο απο τον tcc compiler.

Κώδικας: Επιλογή όλων

CPU Disasm
Address   Hex dump          	Command
00401000    55              		PUSH EBP
00401001    89E5            	MOV EBP,ESP
00401003    81EC 04000000   SUB ESP,4
00401009    90              		NOP
0040100A    8B45 FC         	MOV EAX,DWORD PTR SS&#58;&#91;EBP-4&#93;
0040100D    83F8 03         	CMP EAX,3
00401010    B8 00000000     	MOV EAX,0
00401015    0F9CC0          	SETL AL
00401018    83E0 00         	AND EAX,00000000
0040101B    8B4D FC        	MOV ECX,DWORD PTR SS&#58;&#91;EBP-4&#93;
0040101E    09C1            	OR ECX,EAX
00401020    85C9            	TEST ECX,ECX
00401022    0F84 00000000   JE 00401028
00401028    C9              		LEAVE
00401029    C3              		RETN

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από LightForce » 15 Σεπ 2009 00:50

όου με πρόλαβες soteres2002 :)

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από soteres2002 » 15 Σεπ 2009 00:51

races conditions... :kaloe:
den peirazei omws, dinoume pio simpagi apadisi mazi. :wink:

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 15 Σεπ 2009 01:30

Παιδιά ευχαριστώ για τον χρόνο σας και το ενδιαφέρων σας για το post μου ειδικά και απο moderetors του site!!!
αλλα ψιλοχάθηκα λιγο να σας πώ την αλήθεια......θα προσπαθήσω να μελετήσω το όλο θέμα, αλλα θα ηθελα να μάθω κιόλας τι κάνει η κάθε εντολη assembly στην αντίστοιχη σε σχεση με αυτη της C γραμμή γραμμή να δώ πως αλληλεπιδρά η γλώσσα και να βγάλω έστω μια σύντομη περιγραφή τις κάθε εντολής assembly...

-->Θα προσθέσω 2 παραδείγματα σε γλώσσα υψηλού επιπέδου C και όποιος θέλει ας δώσει τα φώτα του για να μπω λίγο στο κλήμα ωστε να καταφέρω να την μετατρέψω σε γλώσσα χαμηλού επιπέδου assembly....

επίσης θα ήθελα να ρωτήσω χωρίς compiler δεν μπορώ να βγάλω μόνος μου την μετατροπή?θα πρέπει να είμαι καλός γνώστης και τον δυο γλωσσών??


π.χ. 1

Κώδικας: Επιλογή όλων

while &#40;1&#41;
&#123;
  "compound statement"
&#125;

π.x. 2

Κώδικας: Επιλογή όλων

switch &#40;1&#41;
&#123;
case 10&#58; &#123; "compound statement 1 " &#41;
       break;
case 11&#58; &#123; "compound statement 2 " &#41;
       break;
case 12&#58; &#123; "compound statement 3 " &#41;
       break;
case 13&#58; &#123; "compound statement 4 " &#41;
       break;
&#125;

"subsequent statements  "

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από soteres2002 » 15 Σεπ 2009 01:39

tommai έγραψε: επίσης θα ήθελα να ρωτήσω χωρίς compiler δεν μπορώ να βγάλω μόνος μου την μετατροπή?θα πρέπει να είμαι καλός γνώστης και τον δυο γλωσσών??
ναι, αν δεν θες να χρησιμοποιήσεις μεταγλωττιστή μπορείς εσύ να γράψεις απευθείας τον κώδικα, και αν δεν ξέρεις μπορείς να μάθεις. Αυτό το feature του compiler είναι απλώς βοηθητικό. Απλά κάνεις extract την ισοδύναμη μορφή του αρχικού κώδικα σε κάποια φάση της μεταγλώττισης, αλλά αυτό μεταξύ άλλων μπορεί να είναι εντελώς άχρηστο.

Αυτό που θες να κάνεις έχει κάπου κάποια εφαρμογή, ή απλώς πειραματίζεσαι; Η ΑΣΜ κάποιας έτοιμης εφαρμογής που χρησιμοποιεί built-in κλήσεις από το C runtime library ή από άλλες βιβλιοθήκες (όπως στο παράδειγμα που έδωσα) είναι μάλλον αποθαρρυντική για σένα αν μαθαίνεις το πως να γράφεις ΑΣΜ κώδικα, αν τώρα αρχίζεις να ασχολείσαι με το θέμα.

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από LightForce » 15 Σεπ 2009 02:18

tommai έγραψε:Παιδιά ευχαριστώ για τον χρόνο σας και το ενδιαφέρων σας για το post μου ειδικά και απο moderetors του site!!!
αλλα ψιλοχάθηκα λιγο να σας πώ την αλήθεια......θα προσπαθήσω να μελετήσω το όλο θέμα, αλλα θα ηθελα να μάθω κιόλας τι κάνει η κάθε εντολη assembly στην αντίστοιχη σε σχεση με αυτη της C γραμμή γραμμή να δώ πως αλληλεπιδρά η γλώσσα και να βγάλω έστω μια σύντομη περιγραφή τις κάθε εντολής assembly...
Αν τώρα ξεκινάς και x86 Windows 32Bit είναι το OS σου ξεκίνα από εδώ 1 και 2 tommai.
Άρχισε να γράφεις προγράμματα και εξάσκηση στο βασικό σετ εντολών.
Η υπόθεση περιέχει πολύ διάβασμα. Καλή τύχη.

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 15 Σεπ 2009 19:10

ναι τώρα αρχίζω να ασχολούμαι με το θέμα soteres2002 και μπορω να πω βρισκομαι μπροστα σε ενα λαμβινιθο απο κώδικα...τα παραδείγματα που έδωσα μου το έδωσε ο φίλος συνεργάτης και μου είπε οτι είναι μια καλη αρχή να παιδευτής πάνω σε αυτό..και σιγά σιγά καταλαβαίνω ότι διάλεξα μια δύσκολη μορφή γιατί η μετατροπή από μια γλώσσα υψηλή σε χαμηλή προβλεπόταν δύσκολη και απο την αρχή...πάντως εχω και την όρεξη και το μεράκι να μάθω...

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 15 Σεπ 2009 19:39

επιδής θέλω να πειραματιστώ με προγράμματα C και πως αυτά υλοποιούνται σε assembly: θέλω ένα πρόγραμμα που να προσθέσω καθαροκωδικα C και να μου το βγάζει σε assemply υπάρχει καποια freeware λύση??

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από soteres2002 » 15 Σεπ 2009 20:06

tommai έγραψε:θέλω ένα πρόγραμμα που να προσθέσω καθαροκωδικα C και να μου το βγάζει σε assemply υπάρχει καποια freeware λύση??
ηδη αναφέραμε λύση σε αυτό πιο πάνω. Ο ίδιος ο μεταγλωττιστής μπορεί να το κάνει αυτό για εσένα.

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 04 Φεβ 2010 20:51

tommai έγραψε:κώδικας στην C

Κώδικας: Επιλογή όλων

if &#40; z|0 & z<3 &#41;
&#123;
"compound statement"
&#125;
μπορεί να γίνει ημετατροπή??και αν ναι πιος ειναι ο κώδικας σε assemply??

παιδιά προσπάθησα να βγάλω άκρη για την μετατροπή του κώδικα απο C se Assemply αλλα δέν τα κατάφερα..........κανείς να δώσει τα φώτα του???

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από soteres2002 » 04 Φεβ 2010 21:50

Dokimase na grapseis px afto to snippet,

Κώδικας: Επιλογή όλων

void main&#40;&#41; &#123;
  int z = 10;
  if &#40; z|0 & z<3 &#41; &#123;
    // do sth
  &#125;
  return 0;
&#125;
kane compile me -S flag sto gcc, kai des to antistoixo .S (nomizw) arxeio poy tha ftiaxtei. kapou kanei kapoio compare.. ekei vrisketai afto p thes. dokimase kai ama den boreis, tha to kanw gia sena.

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

μετατροπή κώδικα απο C σε Assemply

Δημοσίευση από tommai » 04 Φεβ 2010 22:51

soteres2002 έγραψε:Dokimase na grapseis px afto to snippet,

Κώδικας: Επιλογή όλων

void main&#40;&#41; &#123;
  int z = 10;
  if &#40; z|0 & z<3 &#41; &#123;
    // do sth
  &#125;
  return 0;
&#125;
kane compile me -S flag sto gcc, kai des to antistoixo .S (nomizw) arxeio poy tha ftiaxtei. kapou kanei kapoio compare.. ekei vrisketai afto p thes. dokimase kai ama den boreis, tha to kanw gia sena.

ουφ!πραγματηκά δεν μπορώ....εάν σου ειναι εύκολο να μου το έκανες... :(

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες