www.xbdev.net xbdev - software development
Monday March 19, 2018
home | about | contact | Donations


Assembly Language

What every pc speaks..1010...


C to Assembly...


{Under Construction}


With a bit of knowledge comes great power!  To be able to look at assembly and know how it would look in C is a great thing..... for one, it allows you to see what other people have written in C, without even looking at there C code...mhahaha.


A great way to explore other peoples compiled code is with some dissasembers, such as hackman or mdasm ...or even winhex :)



Now Lets take a look at loops... as loops are a sweet way of doing things over and over again with a relatively few lines of code.... Take a look how much C simplifies our lives.... but also notice how you could optimise that assembly if you had your way :)


Comparison: ForLoop

      int b=0;

      for( int i=0; i<10; i++ )






;_b$ = -4
;_i$  = -8

            mov      DWORD PTR _b$[ebp], 0      ; b=0

; Loop Initilisation

            mov      DWORD PTR _i$[ebp], 0

            jmp      SHORT $L269


; Perform some function, each time we loop


            mov      eax, DWORD PTR _i$[ebp]

            add      eax, 1

            mov      DWORD PTR _i$[ebp], eax


; Check the i<10, if its false, then we exit the loop


            cmp      DWORD PTR _i$[ebp], 10

            jge        SHORT $L271


            mov      ecx, DWORD PTR _b$[ebp]    ; b++      /|\

            add      ecx, 1                                        ;  b++    body

            mov      DWORD PTR _b$[ebp], ecx    ; b++      \|/


            jmp      SHORT $L270




Another example C that is worth taking a look at, is if's ....e.g. if(true) then do this.... now this should be nice and simple, well I hope it is...



Comparison: If


      int b=0;

      if( b==0 )






;_b$ = -4

            mov      DWORD PTR _b$[ebp], 0      ; b=0


; Check if b is zero, and set any flags, in the flags registers

            cmp      DWORD PTR _b$[ebp], 0

            jne        SHORT $L268


; Well if where here, then it was true

            mov      eax, DWORD PTR _b$[ebp]      ; b++      /|\

            add      eax, 1                                           ; b++    body

            mov      DWORD PTR _b$[ebp], eax      ; b++      \|/


; If failed so it jumps straight here














 Visitor: 9534626  { } Copyright (c) 2002-2017 xbdev.net - All rights reserved.
Designated tutorial and software are the property of their respective owners.