Simple C Program: COMP-573A Microcomputers
Simple C Program: COMP-573A Microcomputers
COMP-573A Microcomputers
COMP-573A Microcomputers
Simple C Program
Helloworld.c
printf("Hello World");
}
1
COMP-573A Microcomputers
COMP-573A Microcomputers
Assembly Ouput
● Assembly produced by GCC is easy to recognize:
.file "HelloWorld.c"
.section .rodata
.LC0:
.string "Hello World"
.text
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
…
pushl $.LC0
call printf
addl $16, %esp
leave
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2
2
COMP-573A Microcomputers
COMP-573A Microcomputers
3
COMP-573A Microcomputers
cprogram.c
int add(int x, int y);
int main(void) {
int i,j,k;
i = 2;
j = 3;
k = add(i, j);
return k;
}
COMP-573A Microcomputers
add.s
.text
.globl add
.type add, @function
add:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
addl 8(%ebp), %eax
popl %ebp
ret
4
COMP-573A Microcomputers
COMP-573A Microcomputers
5
COMP-573A Microcomputers
add.c
int add(int x, int y) {
COMP-573A Microcomputers
6
COMP-573A Microcomputers
COMP-573A Microcomputers
Starting GDB
7
COMP-573A Microcomputers
Getting Help
COMP-573A Microcomputers
Breakpoints
8
COMP-573A Microcomputers
Running step-by-step
COMP-573A Microcomputers
Content of registers
● $1 = (void *) 0xbffff6b8
9
COMP-573A Microcomputers
COMP-573A Microcomputers
10
COMP-573A Microcomputers
debugging process.
COMP-573A Microcomputers
ABI Compliance
● Certain architecture allow a great deal of freedom
on how registers and memory are used. ( ex:
Sparc, PowerPC).
● The System V Application Binary Specification
11
COMP-573A Microcomputers
References
12