This is what happens when you compile a high level language program:
Compile-time events happen during the translation of a source program (Java, C, etc) to machine code:
Recall: the compiler will translate all integer constants (represented in ASCII code) in the source program into 2s complement representation:
Example C program:
int x;
int main( )
{
x = 15;
x = x + 7;
}
|
Compile the program and do a hex dump of the compiled code with these UNIX commands:
gcc -c prog.c objdump -d prog.o |
DEMO: /home/cs255001/demo/c-asm/2s-compl.c
Example C program:
int x;
int main( )
{
x = 15; // ASCII code string "15"
x = x + 7;
}
|
The hex-dump shows that the ASCII string "15" is translated into the 2s complement code 00000000 00000000 00000000 00001111:
4: c7 05 00 00 00 00 0f movl $0xf,0x0(%rip) b: 00 00 00 |
DEMO: /home/cs255001/demo/c-asm/2s-compl.c