One option you always have when presented with questions like this is to make use of your compiler's ability to produce source-annotated assembly.
For GCC:
gcc -Wa,-aldhs -g [file]
will produce human readable assembly(well, as human readable as any assembly can be...) with source code interspersed. Here's a short program multiplying 2 longs on a 32 bit architecture.
4:tmp.c **** void main(void) {
16 0000 8D4C2404 leal 4(%esp), %ecx
18 0004 83E4F0 andl $-16, %esp
19 0007 FF71FC pushl -4(%ecx)
21 000a 55 pushl %ebp
23 000b 89E5 movl %esp, %ebp
25 000d 51 pushl %ecx
27 000e 83EC24 subl $36, %esp
5:tmp.c **** long long a = 4000000;
30 0011 C745E000 movl $4000000, -32(%ebp)
31 0018 C745E400 movl $0, -28(%ebp)
6:tmp.c **** long long b = 4000000;
33 001f C745E800 movl $4000000, -24(%ebp)
34 0026 C745EC00 movl $0, -20(%ebp)
7:tmp.c **** long long c = a*b;
36 002d 8B45E4 movl -28(%ebp), %eax
37 0030 89C1 movl %eax, %ecx
38 0032 0FAF4DE8 imull -24(%ebp), %ecx
39 0036 8B45EC movl -20(%ebp), %eax
40 0039 0FAF45E0 imull -32(%ebp), %eax
41 003d 01C1 addl %eax, %ecx
42 003f 8B45E8 movl -24(%ebp), %eax
43 0042 F765E0 mull -32(%ebp)
44 0045 01D1 addl %edx, %ecx
45 0047 89CA movl %ecx, %edx
46 0049 8945F0 movl %eax, -16(%ebp)
47 004c 8955F4 movl %edx, -12(%ebp)
48 004f 8945F0 movl %eax, -16(%ebp)
49 0052 8955F4 movl %edx, -12(%ebp)
8:tmp.c **** }