Covert c program to assembly language program
Compiler uses -S option to generate assembly language code for the given c source code.
Below is the c source code(program.c).
int main() {
int a, b, c;
a = 20, b = 30;
c = a + b;
printf("Sum of two numbers is %d\n", c);
return 0;
}
C source code can be converted to assembly code using the following command.
jp@jp-VirtualBox:~/$ gcc -S program.c
jp@jp-VirtualBox:~/$ ls
program.c program.s
jp@jp-VirtualBox:~/$ ls
program.c program.s
Below is the assembly code for the above given c source code.
.section .rodata
.LC0:
.string "Sum of two numbers is %d\n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $32, %esp
movl $20, 28(%esp)
movl $30, 24(%esp)
movl 24(%esp), %eax
movl 28(%esp), %edx
leal (%edx,%eax), %eax
movl %eax, 20(%esp)
movl $.LC0, %eax
movl 20(%esp), %edx
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
movl $0, %eax
leave
ret
.size main, .-main
.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5.1) 4.4.5"
.section .note.GNU-stack,"",@progbits
Let us compile the assembly code to get the executable "program". And this executable can be used to get the output of the given c program.
jp@jp-VirtualBox:~/$ gcc -o program program.s
jp@jp-VirtualBox:~/$ ls
program program.c program.s
jp@jp-VirtualBox:~/$ ./program
Sum of two numbers is 50
jp@jp-VirtualBox:~/$ ls
program program.c program.s
jp@jp-VirtualBox:~/$ ./program
Sum of two numbers is 50
No comments:
Post a Comment