Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 간단한 C 프로그램 2004.04.26 김희자, 최정욱. 2 목차 예제 소스 코드 컴파일 어셈블리 언어 Dlite 디버거 수행.

Similar presentations


Presentation on theme: "1 간단한 C 프로그램 2004.04.26 김희자, 최정욱. 2 목차 예제 소스 코드 컴파일 어셈블리 언어 Dlite 디버거 수행."— Presentation transcript:

1 1 간단한 C 프로그램 2004.04.26 김희자, 최정욱

2 2 목차 예제 소스 코드 컴파일 어셈블리 언어 Dlite 디버거 수행

3 3 예제 소스 코드 #include int sum=0; main() { int i = 0; for(i=1; i<=5; i++) sum = sum + i; printf("%d\n", sum); }

4 4 컴파일 [root@os2 edu]sslittle-na-sstrix-gcc -o simplec.ss simplec.c [root@os2 edu]sslittle-na-sstrix-gcc -S simplec.c

5 5 어셈블리 언어 (1/4 ).file 1 "simplec.c" # GNU C 2.6.3 [AL 1.1, MM 40, tma 0.1] SimpleScalar running sstrix compiled by GNU C # Cc1 defaults: # -mgas -mgpOPT # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1): # -quiet -dumpbase -o gcc2_compiled.: __gnu_compiled_c:.globl sum.sdata.align 2 sum:.word 0.align 2

6 6 어셈블리 언어 (2/4 ) $LC0:.ascii "%d\n\000".text.align 2.globl main.text.loc 1 6.ent main main:.frame $fp,32,$31 # vars= 8, regs= 2/0, args= 16, extra= 0.mask 0xc0000000,-4.fmask 0x00000000,0 subu $sp,$sp,32

7 7 어셈블리 언어 (3/4 ) sw $31,28($sp) sw $fp,24($sp) move $fp,$sp jal __main sw $0,16($fp) li $2,0x00000001 # 1 sw $2,16($fp) $L2: lw $2,16($fp) slt $3,$2,6 bne $3,$0,$L5 j $L3 $L5: lw $2,sum lw $3,16($fp) addu $2,$2,$3 sw $2,sum

8 8 어셈블리 언어 (4/4 ) $L4: lw $3,16($fp) addu $2,$3,1 move $3,$2 sw $3,16($fp) j $L2 $L3: la $4,$LC0 lw $5,sum jal printf $L1: move $sp,$fp # sp not trusted here lw $31,28($sp) lw $fp,24($sp) addu $sp,$sp,32 j $31.end main

9 9 Dlite 디버거 수행 결과 (1/7) [root@os2 edu]# simplesim-3.0/sim-safe -i simplec.ss DLite! > dis main 0x004001f0: addiu r29,r29,-32 0x004001f8: sw r31,28(r29) 0x00400200: sw r30,24(r29) 0x00400208: addu r30,r0,r29 0x00400210: jal 0x400488 0x00400218: sw r0,16(r30) 0x00400220: addiu r2,r0,1 0x00400228: sw r2,16(r30) 0x00400230: lw r2,16(r30) 0x00400238: slti r3,r2,6 0x00400240: bne r3,r0,0x400250 0x00400248: j 0x400298 0x00400250: lw r2,-32768(r28) 0x00400258: lw r3,16(r30) 0x00400260: addu r2,r2,r3 0x00400268: sw r2,-32768(r28)

10 10 Dlite 디버거 수행 결과 (2/7) DLite! > break 0x400260 breakpoint #1 set @ @0x00400260:@0x00400261, class: exec DLite! > cont Stopping at code breakpoint #1 @ 0x00400260... [ 198] 0x00400260: addu r2,r2,r3 DLite! > iregs PC: 0x00400258 NPC: 0x00400260 HI: 0x00000000 LO: 0x00000000 FCC: 0x00000000 $r0: 0/0x00000000 $r1: 0/0x00000000 $r2: 0/0x00000000 $r3: 1/0x00000001 $r4: 268440008/0x100011c8 $r5: 2147450884/0x7fff8004 $r6: 2147450892/0x7fff800c $r7: 268440000/0x100011c0 $r8: 2130640639/0x7efefeff $r9: 791621423/0x2f2f2f2f $r10: 0/0x00000000 $r11: 0/0x00000000 $r12: 0/0x00000000 $r13: 0/0x00000000 $r14: 0/0x00000000 $r15: 0/0x00000000

11 11 Dlite 디버거 수행 결과 (3/7) $r16: 1/0x00000001 $r17: 2147450884/0x7fff8004 $r18: 2147450892/0x7fff800c $r19: 0/0x00000000 $r20: 0/0x00000000 $r21: 0/0x00000000 $r22: 0/0x00000000 $r23: 0/0x00000000 $r24: 0/0x00000000 $r25: 0/0x00000000 $r26: 0/0x00000000 $r27: 0/0x00000000 $r28: 268473664/0x10009540 $r29: 2147450824/0x7fff7fc8 $r30: 2147450824/0x7fff7fc8 $r31: 4194840/0x00400218 DLite! > cont Stopping at code breakpoint #1 @ 0x00400260... [ 210] 0x00400260: addu r2,r2,r3 DLite! > cont Stopping at code breakpoint #1 @ 0x00400260... [ 222] 0x00400260: addu r2,r2,r3 DLite! > cont Stopping at code breakpoint #1 @ 0x00400260... [ 234] 0x00400260: addu r2,r2,r3

12 12 Dlite 디버거 수행 결과 (4/7) DLite! > cont Stopping at code breakpoint #1 @ 0x00400260... [ 246] 0x00400260: addu r2,r2,r3 DLite! > iregs PC: 0x00400258 NPC: 0x00400260 HI: 0x00000000 LO: 0x00000000 FCC: 0x00000000 $r0: 0/0x00000000 $r1: 0/0x00000000 $r2: 10/0x0000000a $r3: 5/0x00000005 $r4: 268440008/0x100011c8 $r5: 2147450884/0x7fff8004 $r6: 2147450892/0x7fff800c $r7: 268440000/0x100011c0 $r8: 2130640639/0x7efefeff $r9: 791621423/0x2f2f2f2f $r10: 0/0x00000000 $r11: 0/0x00000000 $r12: 0/0x00000000 $r13: 0/0x00000000

13 13 Dlite 디버거 수행 결과 (5/7) $r14: 0/0x00000000 $r15: 0/0x00000000 $r16: 1/0x00000001 $r17: 2147450884/0x7fff8004 $r18: 2147450892/0x7fff800c $r19: 0/0x00000000 $r20: 0/0x00000000 $r21: 0/0x00000000 $r22: 0/0x00000000 $r23: 0/0x00000000 $r24: 0/0x00000000 $r25: 0/0x00000000 $r26: 0/0x00000000 $r27: 0/0x00000000 $r28: 268473664/0x10009540 $r29: 2147450824/0x7fff7fc8 $r30: 2147450824/0x7fff7fc8 $r31: 4194840/0x00400218 DLite! > step [ 247] 0x00400268: sw r2,-32768(r28) DLite! > cont 15

14 14 Dlite 디버거 수행 결과 (6/7) sim: ** simulation statistics ** sim_num_insn 7638 # total number of instructions executed sim_num_refs 4149 # total number of loads and stores executed sim_elapsed_time 119 # total simulation time in seconds sim_inst_rate 64.1849 # simulation speed (in insts/sec) ld_text_base 0x00400000 # program text (code) segment base ld_text_size 70240 # program text (code) size in bytes ld_data_base 0x10000000 # program initialized data segment base ld_data_size 8192 # program init'ed `.data' and uninit'ed `.bss' size in bytes ld_stack_base 0x7fffc000 # program stack segment base (highest address in stack)

15 15 Dlite 디버거 수행 결과 (7/7) ld_stack_size 16384 # program initial stack size ld_prog_entry 0x00400140 # program entry point (initial PC) ld_environ_base 0x7fff8000 # program environment base address address ld_target_big_endian 0 # target executable endian-ness, non-zero if big endian mem.page_count 26 # total number of pages allocated mem.page_mem 104k # total size of memory pages allocated mem.ptab_misses 26 # total first level page table misses mem.ptab_accesses 474402 # total page table accesses mem.ptab_miss_rate 0.0001 # first level page table miss rate


Download ppt "1 간단한 C 프로그램 2004.04.26 김희자, 최정욱. 2 목차 예제 소스 코드 컴파일 어셈블리 언어 Dlite 디버거 수행."

Similar presentations


Ads by Google