Nyt on heitetty tuonne väliin työohjeessa pyydettyihin kohtiin tekstiä. Tässä nyt ei kuitenkaan ihan suoraan kerrota kaikkea; joudut itse miettimään. Tarkkaavaisuuden kohteet on kuitenkin demonstroitu. Eli etsi tekstiä "HARKKA:" -- niin mäkin etsin sitten tarkastaessa... GNU gdb Red Hat Linux (6.3.0.0-1.84rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu"...Using host libthread_db library "/lib64/libthread_db.so.1". (gdb) display /3i $rip (gdb) display /t $eflags (gdb) display /x $rbp (gdb) display /x $rsp (gdb) display /x $rip (gdb) start Breakpoint 1 at 0x400620: file malliharkka.c, line 102. Starting program: /autohome/home3/363/nieminen/kj07kesa/harkka/malliharkka main (argc=1, argv=0x7fff122e2ad8) at malliharkka.c:102 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400620 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400620 : movq $0xffffffffffffffff,0xffffffffffffffc0(%rbp) 0x400628 : movq $0x2,0xffffffffffffffc8(%rbp) 0x400630 : movq $0x3,0xffffffffffffffd0(%rbp) (gdb) stepi 0x0000000000400628 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400628 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400628 : movq $0x2,0xffffffffffffffc8(%rbp) 0x400630 : movq $0x3,0xffffffffffffffd0(%rbp) 0x400638 : movq $0xfffffffffffffff0,0xffffffffffffffd8(%rbp) (gdb) disassemble Dump of assembler code for function main: 0x0000000000400611 : push %rbp 0x0000000000400612 : mov %rsp,%rbp 0x0000000000400615 : sub $0x50,%rsp 0x0000000000400619 : mov %edi,0xffffffffffffffbc(%rbp) 0x000000000040061c : mov %rsi,0xffffffffffffffb0(%rbp) 0x0000000000400620 : movq $0xffffffffffffffff,0xffffffffffffffc0(%rbp) 0x0000000000400628 : movq $0x2,0xffffffffffffffc8(%rbp) 0x0000000000400630 : movq $0x3,0xffffffffffffffd0(%rbp) 0x0000000000400638 : movq $0xfffffffffffffff0,0xffffffffffffffd8(%rbp) 0x0000000000400640 : movq $0x2,0xffffffffffffffe0(%rbp) 0x0000000000400648 : movq $0x8,0xffffffffffffffe8(%rbp) 0x0000000000400650 : movq $0x6,0xfffffffffffffff0(%rbp) 0x0000000000400658 : mov 0xfffffffffffffff0(%rbp),%rsi 0x000000000040065c : lea 0xffffffffffffffc0(%rbp),%rdi 0x0000000000400660 : callq 0x4005bc 0x0000000000400665 : mov 0xfffffffffffffff0(%rbp),%rsi HARKKA: Tästä alkaisin selostaa, mitä ohjeessa pyydettiin. 0x0000000000400669 : lea 0xffffffffffffffc0(%rbp),%rdi HARKKA: Tästä jatkaisin selostamista... 0x000000000040066d : callq 0x4004f8 HARKKA: Ja tänne... 0x0000000000400672 : mov %rax,0xfffffffffffffff8(%rbp) HARKKA: Ja ainakin tänne... 0x0000000000400676 : mov 0xfffffffffffffff0(%rbp),%rsi HARKKA: Jokainen saa itse ratkaista, onko ohjeen mukaista jatkaa tänne... ja jos ei, niin miksi ei... 0x000000000040067a : lea 0xffffffffffffffc0(%rbp),%rdi 0x000000000040067e : callq 0x4005bc 0x0000000000400683 : mov 0xfffffffffffffff8(%rbp),%rsi 0x0000000000400687 : mov $0x400790,%edi 0x000000000040068c : mov $0x0,%eax 0x0000000000400691 : callq 0x400420 0x0000000000400696 : mov $0x0,%eax 0x000000000040069b : leaveq 0x000000000040069c : retq End of assembler dump. (gdb) x /32xg $rbp-128 0x7fff122e2970: 0x00007fff122e2a58 0x00002aaaaaaab000 0x7fff122e2980: 0x0000000000000000 0x0000000000000000 0x7fff122e2990: 0x0000000000000000 0x0000003aaf319be0 0x7fff122e29a0: 0x00007fff122e2ad8 0x00000001004003fb 0x7fff122e29b0: 0xffffffffffffffff 0x00000000004006d0 0x7fff122e29c0: 0x0000000000000000 0x0000003aaf319be0 0x7fff122e29d0: 0x00000000004006a0 0x0000000000400440 0x7fff122e29e0: 0x00007fff122e2ad0 0x0000000000000000 0x7fff122e29f0: 0x00000000004006a0 0x0000003aaf61c40f 0x7fff122e2a00: 0x0000000000000000 0x00007fff122e2ad8 0x7fff122e2a10: 0x0000000100400440 0x0000000000400611 0x7fff122e2a20: 0x0000003aaf319be0 0x00000000004006a0 0x7fff122e2a30: 0x0000000000400440 0x00007fff122e2ad0 0x7fff122e2a40: 0x0000000000000000 0x0000000000000000 0x7fff122e2a50: 0x00007fff122e2a00 0x0000003aaf61c3ca 0x7fff122e2a60: 0x0000000000000000 0x0000000000000000 (gdb) display 5: /x $rip = 0x400628 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400628 : movq $0x2,0xffffffffffffffc8(%rbp) 0x400630 : movq $0x3,0xffffffffffffffd0(%rbp) 0x400638 : movq $0xfffffffffffffff0,0xffffffffffffffd8(%rbp) (gdb) stepi 0x0000000000400630 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400630 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400630 : movq $0x3,0xffffffffffffffd0(%rbp) 0x400638 : movq $0xfffffffffffffff0,0xffffffffffffffd8(%rbp) 0x400640 : movq $0x2,0xffffffffffffffe0(%rbp) (gdb) 0x0000000000400638 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400638 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400638 : movq $0xfffffffffffffff0,0xffffffffffffffd8(%rbp) 0x400640 : movq $0x2,0xffffffffffffffe0(%rbp) 0x400648 : movq $0x8,0xffffffffffffffe8(%rbp) (gdb) 0x0000000000400640 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400640 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400640 : movq $0x2,0xffffffffffffffe0(%rbp) 0x400648 : movq $0x8,0xffffffffffffffe8(%rbp) 0x400650 : movq $0x6,0xfffffffffffffff0(%rbp) (gdb) 0x0000000000400648 102 long long int testitaulu[] = {-1, 2, 3, -16, 2, 8}; 5: /x $rip = 0x400648 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400648 : movq $0x8,0xffffffffffffffe8(%rbp) 0x400650 : movq $0x6,0xfffffffffffffff0(%rbp) 0x400658 : mov 0xfffffffffffffff0(%rbp),%rsi (gdb) 103 long long int koko = 6; 5: /x $rip = 0x400650 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400650 : movq $0x6,0xfffffffffffffff0(%rbp) 0x400658 : mov 0xfffffffffffffff0(%rbp),%rsi 0x40065c : lea 0xffffffffffffffc0(%rbp),%rdi (gdb) 106 tulosta_taulukko(testitaulu, koko); 5: /x $rip = 0x400658 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400658 : mov 0xfffffffffffffff0(%rbp),%rsi 0x40065c : lea 0xffffffffffffffc0(%rbp),%rdi 0x400660 : callq 0x4005bc (gdb) 0x000000000040065c 106 tulosta_taulukko(testitaulu, koko); 5: /x $rip = 0x40065c 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x40065c : lea 0xffffffffffffffc0(%rbp),%rdi 0x400660 : callq 0x4005bc 0x400665 : mov 0xfffffffffffffff0(%rbp),%rsi (gdb) 0x0000000000400660 106 tulosta_taulukko(testitaulu, koko); 5: /x $rip = 0x400660 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x400660 : callq 0x4005bc 0x400665 : mov 0xfffffffffffffff0(%rbp),%rsi 0x400669 : lea 0xffffffffffffffc0(%rbp),%rdi (gdb) tulosta_taulukko (taulu=0x2aaaaaaab000, koko=140733498403416) at malliharkka.c:92 92 void tulosta_taulukko(long long int taulu[], long long int koko){ 5: /x $rip = 0x4005bc 4: /x $rsp = 0x7fff122e2998 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1000000110 1: x/3i $rip 0x4005bc : push %rbp 0x4005bd : mov %rsp,%rbp 0x4005c0 : sub $0x20,%rsp (gdb) finish Run till exit from #0 tulosta_taulukko (taulu=0x2aaaaaaab000, koko=140733498403416) at malliharkka.c:92 main (argc=1, argv=0x7fff122e2ad8) at malliharkka.c:107 107 samoja = kaanna_taulukko(testitaulu, koko); 5: /x $rip = 0x400665 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x400665 : mov 0xfffffffffffffff0(%rbp),%rsi 0x400669 : lea 0xffffffffffffffc0(%rbp),%rdi 0x40066d : callq 0x4004f8 (gdb) stepi 0x0000000000400669 107 samoja = kaanna_taulukko(testitaulu, koko); 5: /x $rip = 0x400669 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x400669 : lea 0xffffffffffffffc0(%rbp),%rdi 0x40066d : callq 0x4004f8 0x400672 : mov %rax,0xfffffffffffffff8(%rbp) (gdb) 0x000000000040066d 107 samoja = kaanna_taulukko(testitaulu, koko); 5: /x $rip = 0x40066d 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x40066d : callq 0x4004f8 0x400672 : mov %rax,0xfffffffffffffff8(%rbp) 0x400676 : mov 0xfffffffffffffff0(%rbp),%rsi (gdb) x /32xg $rbp-128 0x7fff122e2970: 0x0000000000000006 0x00007fff122e29b0 0x7fff122e2980: 0x0000000000000000 0x0000000600000000 0x7fff122e2990: 0x00007fff122e29f0 0x0000000000400665 0x7fff122e29a0: 0x00007fff122e2ad8 0x00000001004003fb 0x7fff122e29b0: 0xffffffffffffffff 0x0000000000000002 0x7fff122e29c0: 0x0000000000000003 0xfffffffffffffff0 0x7fff122e29d0: 0x0000000000000002 0x0000000000000008 0x7fff122e29e0: 0x0000000000000006 0x0000000000000000 0x7fff122e29f0: 0x00000000004006a0 0x0000003aaf61c40f 0x7fff122e2a00: 0x0000000000000000 0x00007fff122e2ad8 0x7fff122e2a10: 0x0000000100400440 0x0000000000400611 0x7fff122e2a20: 0x0000003aaf319be0 0x00000000004006a0 0x7fff122e2a30: 0x0000000000400440 0x00007fff122e2ad0 0x7fff122e2a40: 0x0000000000000000 0x0000000000000000 0x7fff122e2a50: 0x00007fff122e2a00 0x0000003aaf61c3ca 0x7fff122e2a60: 0x0000000000000000 0x0000000000000000 (gdb) display 5: /x $rip = 0x40066d 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x40066d : callq 0x4004f8 0x400672 : mov %rax,0xfffffffffffffff8(%rbp) 0x400676 : mov 0xfffffffffffffff0(%rbp),%rsi (gdb) stepi kaanna_taulukko (taulu=0x40060f, koko=252047367136) at malliharkka.c:72 72 long long int kaanna_taulukko(long long int taulu[], long long int koko){ 5: /x $rip = 0x4004f8 4: /x $rsp = 0x7fff122e2998 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x4004f8 : push %rbp 0x4004f9 : mov %rsp,%rbp 0x4004fc : mov %rdi,0xffffffffffffffd8(%rbp) (gdb) disassemble Dump of assembler code for function kaanna_taulukko: 0x00000000004004f8 : push %rbp HARKKA: Täällä on taas kommentoitavaa... Tähän siis kirjoittaisin, miksi RBP laitetaan pinoon... 0x00000000004004f9 : mov %rsp,%rbp HARKKA: Ja niin edelleen... 0x00000000004004fc : mov %rdi,0xffffffffffffffd8(%rbp) HARKKA: Näihin saattaisin jotain pistää 0x0000000000400500 : mov %rsi,0xffffffffffffffd0(%rbp) HARKKA: Ehkä... 0x0000000000400504 : movq $0x0,0xfffffffffffffff0(%rbp) 0x000000000040050c : movq $0x0,0xffffffffffffffe8(%rbp) 0x0000000000400514 : mov 0xffffffffffffffd0(%rbp),%rax 0x0000000000400518 : dec %rax 0x000000000040051b : mov %rax,0xffffffffffffffe0(%rbp) 0x000000000040051f : jmpq 0x4005a8 0x0000000000400524 : mov 0xffffffffffffffe8(%rbp),%rax 0x0000000000400528 : shl $0x3,%rax 0x000000000040052c : add 0xffffffffffffffd8(%rbp),%rax 0x0000000000400530 : mov (%rax),%rdx 0x0000000000400533 : mov 0xffffffffffffffe0(%rbp),%rax 0x0000000000400537 : shl $0x3,%rax 0x000000000040053b : add 0xffffffffffffffd8(%rbp),%rax 0x000000000040053f : mov (%rax),%rax 0x0000000000400542 : cmp %rax,%rdx 0x0000000000400545 : jne 0x400550 0x0000000000400547 : lea 0xfffffffffffffff0(%rbp),%rax 0x000000000040054b : incq (%rax) 0x000000000040054e : jmp 0x40059a 0x0000000000400550 : mov 0xffffffffffffffe8(%rbp),%rax 0x0000000000400554 : shl $0x3,%rax 0x0000000000400558 : add 0xffffffffffffffd8(%rbp),%rax 0x000000000040055c : mov (%rax),%rax 0x000000000040055f : mov %rax,0xfffffffffffffff8(%rbp) 0x0000000000400563 : mov 0xffffffffffffffe8(%rbp),%rax 0x0000000000400567 : shl $0x3,%rax 0x000000000040056b : mov %rax,%rdx 0x000000000040056e : add 0xffffffffffffffd8(%rbp),%rdx 0x0000000000400572 : mov 0xffffffffffffffe0(%rbp),%rax 0x0000000000400576 : shl $0x3,%rax 0x000000000040057a : add 0xffffffffffffffd8(%rbp),%rax 0x000000000040057e : mov (%rax),%rax 0x0000000000400581 : mov %rax,(%rdx) 0x0000000000400584 : mov 0xffffffffffffffe0(%rbp),%rax 0x0000000000400588 : shl $0x3,%rax 0x000000000040058c : mov %rax,%rdx 0x000000000040058f : add 0xffffffffffffffd8(%rbp),%rdx 0x0000000000400593 : mov 0xfffffffffffffff8(%rbp),%rax 0x0000000000400597 : mov %rax,(%rdx) 0x000000000040059a : lea 0xffffffffffffffe8(%rbp),%rax 0x000000000040059e : incq (%rax) 0x00000000004005a1 : lea 0xffffffffffffffe0(%rbp),%rax 0x00000000004005a5 : decq (%rax) 0x00000000004005a8 : mov 0xffffffffffffffe0(%rbp),%rax 0x00000000004005ac : cmp 0xffffffffffffffe8(%rbp),%rax 0x00000000004005b0 : jg 0x400524 0x00000000004005b6 : mov 0xfffffffffffffff0(%rbp),%rax HARKKA: Ja taas tänne loppuun kuuluisi laittaa kommenttia 0x00000000004005ba : leaveq HARKKA: Ja taas tänne loppuun kuuluisi laittaa kommenttia 0x00000000004005bb : retq HARKKA: Ja taas tänne loppuun kuuluisi laittaa kommenttia End of assembler dump. (gdb) info registers rax 0xa 10 rbx 0x3aaf319be0 252047367136 rcx 0x1 1 rdx 0x3aaf8335a0 252052714912 rsi 0x6 6 rdi 0x7fff122e29b0 140733498403248 rbp 0x7fff122e29f0 0x7fff122e29f0 rsp 0x7fff122e2998 0x7fff122e2998 r8 0xa 10 r9 0x2aaaaaacf1a0 46912496267680 r10 0x2aaaaaaab000 46912496119808 r11 0x3aaf65fe30 252050800176 r12 0x400440 4195392 r13 0x7fff122e2ad0 140733498403536 r14 0x0 0 r15 0x0 0 rip 0x4004f8 0x4004f8 eflags 0x246 582 cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb) x /12xg $rdi 0x7fff122e29b0: 0xffffffffffffffff 0x0000000000000002 0x7fff122e29c0: 0x0000000000000003 0xfffffffffffffff0 0x7fff122e29d0: 0x0000000000000002 0x0000000000000008 0x7fff122e29e0: 0x0000000000000006 0x0000000000000000 0x7fff122e29f0: 0x00000000004006a0 0x0000003aaf61c40f 0x7fff122e2a00: 0x0000000000000000 0x00007fff122e2ad8 (gdb) stepi 0x00000000004004f9 72 long long int kaanna_taulukko(long long int taulu[], long long int koko){ 5: /x $rip = 0x4004f9 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1001000110 1: x/3i $rip 0x4004f9 : mov %rsp,%rbp 0x4004fc : mov %rdi,0xffffffffffffffd8(%rbp) 0x400500 : mov %rsi,0xffffffffffffffd0(%rbp) (gdb) 0x00000000004004fc 72 long long int kaanna_taulukko(long long int taulu[], long long int koko){ 5: /x $rip = 0x4004fc 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x4004fc : mov %rdi,0xffffffffffffffd8(%rbp) 0x400500 : mov %rsi,0xffffffffffffffd0(%rbp) 0x400504 : movq $0x0,0xfffffffffffffff0(%rbp) (gdb) 0x0000000000400500 72 long long int kaanna_taulukko(long long int taulu[], long long int koko){ 5: /x $rip = 0x400500 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400500 : mov %rsi,0xffffffffffffffd0(%rbp) 0x400504 : movq $0x0,0xfffffffffffffff0(%rbp) 0x40050c : movq $0x0,0xffffffffffffffe8(%rbp) (gdb) 74 long long int lkm_samoja = 0; =============================================================================== HARKKA: Tänne voisin raivata tilaa sitten kertoakseni loput vastaukset seuraavaan tapaan: HARKKA: Ajon perusteella (kun katson tätä tiedostoa alas ja ylöspäin) huomaan että esim. lokaali muuttujani lkm_samoja on muistiosoitteessa 0xfffffffffffffff0(%rbp) eli -0x10(%rbp) eli tässä nimenomaisessa aktivaatiossa osoitteessa 0x7fff122e2980. HARKKA: Parametrini nimeltä "koko" on näköjään laitettu osoitteeseen 0xffffffffffffffd0(%rbp) eli tämän aktivaation ajan nimenomaan osoitteeseen 0x7fff122e2960 HARKKA: Parametrini nimeltä "taulu" on nyt osoitteessa 0x7fff122e2968 HARKKA: Lokaali muuttujani ioikea on osoitteessa 0x7fff122e2970 HARKKA: Lokaali muuttujani ivasen on osoitteessa 0x7fff122e2978 (ei vielä asetettu tässä vaiheessa, joten muistidumpin arvojen perusteella ei voi arvata sijaintia vielä tässä vaiheessa suoritusta; se selvisi ihan hyvin, kun katsoi alempana C-koodin sijoitusrivien toteutumista stepi:llä, eli mitkä muistipaikat siellä on siirtojen ym. käskyjen kohdeoperandeina.) HARKKA: ... tähän tulisi kaikki muutkin muuttujat ja työohjeessa vaaditut selosteet ... mm. ainakin nuo seuraavat kait mie siellä työohjeessa pyysin tekemään: HARKKA: Tämän aktivaation pinokehyksen kantaosoite on 0x7fff122e2990 jne. Nämä kaikki lukuarvot tosiaan riippuvat sinun ohjelmastasi, ja siitä nimenomaisesta ajosta jonka olet tallentanut! Eli ota kerralla riittävästi tietoa ulos, että voit toteuttaa lopullisen selostuksen niiden tietojen perusteella! Tekstieditorin Copy-pastellahan nuo lukuarvot tulevat kätevästi, kunhan ovat oikeasta paikasta kopioidut... Absoluuttisten virtuaaliosoitteiden saamiseksi joudut laskemaan heksoja yhteen, kuten tässä esimerkissä 0xfffffffffffffff0(%rbp) -> -0x10(%rbp) -> 0x7fff122e2990 - 0x10 = 0x7fff122e2980 ... sekin onnistuu helpoiten copy-pastella ja vähiten merkitseviä numeroita muuttamalla. Kun on pari osoitetta valmiiksi laskettuna, saa muut helposti; osoitteethan ovat samassa järjestyksessä ja samoin välimatkoin sijoitettuja kuin negatiivisten offsettien heksaesitykset. siis jos 0xfffffffffffffff0(%rbp) on 0x7fff122e2980 niin 0xffffffffffffffe0(%rbp) on 0x7fff122e2970 ja 0xffffffffffffffd8(%rbp) on 0x7fff122e2968 ^^ ^^ ja niin edelleen... HARKKA: Edellisen aktivaation kehyksen kantaosoite on 0x00007fff122e29f0 HARKKA: Edellisen aktivaation kehyksen kantaosoite on tallennettu muistiosoitteeseen 0x7fff122e2990 HARKKA: Pinon huipun osoite tällä hetkellä on ... ja sellattiin se olis valmis kun vielä pari copy-pastea tekisi. =============================================================================== 5: /x $rip = 0x400504 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400504 : movq $0x0,0xfffffffffffffff0(%rbp) 0x40050c : movq $0x0,0xffffffffffffffe8(%rbp) 0x400514 : mov 0xffffffffffffffd0(%rbp),%rax (gdb) x /32xg $rbp-128 0x7fff122e2910: 0x0000003aaf319be0 0x0000003aaf2120b2 0x7fff122e2920: 0x0000000000000006 0x0000000000000001 0x7fff122e2930: 0x0000003aaf8335a0 0x000000000040078f 0x7fff122e2940: 0x000000000000000a 0x0000000000000000 0x7fff122e2950: 0x0000003aaf70c160 0x00002aaaaaaab000 0x7fff122e2960: 0x0000000000000006 0x00007fff122e29b0 0x7fff122e2970: 0x0000000000000006 0x00007fff122e29b0 0x7fff122e2980: 0x0000000000000000 0x0000000600000000 0x7fff122e2990: 0x00007fff122e29f0 0x0000000000400672 0x7fff122e29a0: 0x00007fff122e2ad8 0x00000001004003fb 0x7fff122e29b0: 0xffffffffffffffff 0x0000000000000002 0x7fff122e29c0: 0x0000000000000003 0xfffffffffffffff0 0x7fff122e29d0: 0x0000000000000002 0x0000000000000008 0x7fff122e29e0: 0x0000000000000006 0x0000000000000000 0x7fff122e29f0: 0x00000000004006a0 0x0000003aaf61c40f 0x7fff122e2a00: 0x0000000000000000 0x00007fff122e2ad8 (gdb) display 5: /x $rip = 0x400504 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400504 : movq $0x0,0xfffffffffffffff0(%rbp) 0x40050c : movq $0x0,0xffffffffffffffe8(%rbp) 0x400514 : mov 0xffffffffffffffd0(%rbp),%rax (gdb) stepi 76 ivasen=0; 5: /x $rip = 0x40050c 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x40050c : movq $0x0,0xffffffffffffffe8(%rbp) 0x400514 : mov 0xffffffffffffffd0(%rbp),%rax 0x400518 : dec %rax (gdb) 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x400514 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400514 : mov 0xffffffffffffffd0(%rbp),%rax 0x400518 : dec %rax 0x40051b : mov %rax,0xffffffffffffffe0(%rbp) (gdb) 0x0000000000400518 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x400518 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400518 : dec %rax 0x40051b : mov %rax,0xffffffffffffffe0(%rbp) 0x40051f : jmpq 0x4005a8 (gdb) 0x000000000040051b 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x40051b 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40051b : mov %rax,0xffffffffffffffe0(%rbp) 0x40051f : jmpq 0x4005a8 0x400524 : mov 0xffffffffffffffe8(%rbp),%rax (gdb) 0x000000000040051f 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x40051f 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40051f : jmpq 0x4005a8 0x400524 : mov 0xffffffffffffffe8(%rbp),%rax 0x400528 : shl $0x3,%rax (gdb) 0x00000000004005a8 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005a8 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x4005a8 : mov 0xffffffffffffffe0(%rbp),%rax 0x4005ac : cmp 0xffffffffffffffe8(%rbp),%rax 0x4005b0 : jg 0x400524 (gdb) 0x00000000004005ac 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005ac 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x4005ac : cmp 0xffffffffffffffe8(%rbp),%rax 0x4005b0 : jg 0x400524 0x4005b6 : mov 0xfffffffffffffff0(%rbp),%rax (gdb) 0x00000000004005b0 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005b0 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x4005b0 : jg 0x400524 0x4005b6 : mov 0xfffffffffffffff0(%rbp),%rax 0x4005ba : leaveq (gdb) 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400524 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400524 : mov 0xffffffffffffffe8(%rbp),%rax 0x400528 : shl $0x3,%rax 0x40052c : add 0xffffffffffffffd8(%rbp),%rax (gdb) 0x0000000000400528 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400528 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400528 : shl $0x3,%rax 0x40052c : add 0xffffffffffffffd8(%rbp),%rax 0x400530 : mov (%rax),%rdx (gdb) 0x000000000040052c 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x40052c 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x40052c : add 0xffffffffffffffd8(%rbp),%rax 0x400530 : mov (%rax),%rdx 0x400533 : mov 0xffffffffffffffe0(%rbp),%rax (gdb) 0x0000000000400530 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400530 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400530 : mov (%rax),%rdx 0x400533 : mov 0xffffffffffffffe0(%rbp),%rax 0x400537 : shl $0x3,%rax (gdb) 0x0000000000400533 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400533 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400533 : mov 0xffffffffffffffe0(%rbp),%rax 0x400537 : shl $0x3,%rax 0x40053b : add 0xffffffffffffffd8(%rbp),%rax (gdb) 0x0000000000400537 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400537 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400537 : shl $0x3,%rax 0x40053b : add 0xffffffffffffffd8(%rbp),%rax 0x40053f : mov (%rax),%rax (gdb) 0x000000000040053b 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x40053b 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40053b : add 0xffffffffffffffd8(%rbp),%rax 0x40053f : mov (%rax),%rax 0x400542 : cmp %rax,%rdx (gdb) 0x000000000040053f 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x40053f 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40053f : mov (%rax),%rax 0x400542 : cmp %rax,%rdx 0x400545 : jne 0x400550 (gdb) 0x0000000000400542 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400542 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400542 : cmp %rax,%rdx 0x400545 : jne 0x400550 0x400547 : lea 0xfffffffffffffff0(%rbp),%rax (gdb) 0x0000000000400545 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400545 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1010000010 1: x/3i $rip 0x400545 : jne 0x400550 0x400547 : lea 0xfffffffffffffff0(%rbp),%rax 0x40054b : incq (%rax) (gdb) 82 tmp = taulu[ivasen]; 5: /x $rip = 0x400550 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1010000010 1: x/3i $rip 0x400550 : mov 0xffffffffffffffe8(%rbp),%rax 0x400554 : shl $0x3,%rax 0x400558 : add 0xffffffffffffffd8(%rbp),%rax (gdb) 0x0000000000400554 82 tmp = taulu[ivasen]; 5: /x $rip = 0x400554 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1010000010 1: x/3i $rip 0x400554 : shl $0x3,%rax 0x400558 : add 0xffffffffffffffd8(%rbp),%rax 0x40055c : mov (%rax),%rax (gdb) 0x0000000000400558 82 tmp = taulu[ivasen]; 5: /x $rip = 0x400558 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x400558 : add 0xffffffffffffffd8(%rbp),%rax 0x40055c : mov (%rax),%rax 0x40055f : mov %rax,0xfffffffffffffff8(%rbp) (gdb) 0x000000000040055c 82 tmp = taulu[ivasen]; 5: /x $rip = 0x40055c 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x40055c : mov (%rax),%rax 0x40055f : mov %rax,0xfffffffffffffff8(%rbp) 0x400563 : mov 0xffffffffffffffe8(%rbp),%rax (gdb) 0x000000000040055f 82 tmp = taulu[ivasen]; 5: /x $rip = 0x40055f 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x40055f : mov %rax,0xfffffffffffffff8(%rbp) 0x400563 : mov 0xffffffffffffffe8(%rbp),%rax 0x400567 : shl $0x3,%rax (gdb) 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x400563 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400563 : mov 0xffffffffffffffe8(%rbp),%rax 0x400567 : shl $0x3,%rax 0x40056b : mov %rax,%rdx (gdb) 0x0000000000400567 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x400567 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400567 : shl $0x3,%rax 0x40056b : mov %rax,%rdx 0x40056e : add 0xffffffffffffffd8(%rbp),%rdx (gdb) 0x000000000040056b 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x40056b 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x40056b : mov %rax,%rdx 0x40056e : add 0xffffffffffffffd8(%rbp),%rdx 0x400572 : mov 0xffffffffffffffe0(%rbp),%rax (gdb) 0x000000000040056e 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x40056e 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1001000110 1: x/3i $rip 0x40056e : add 0xffffffffffffffd8(%rbp),%rdx 0x400572 : mov 0xffffffffffffffe0(%rbp),%rax 0x400576 : shl $0x3,%rax (gdb) 0x0000000000400572 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x400572 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400572 : mov 0xffffffffffffffe0(%rbp),%rax 0x400576 : shl $0x3,%rax 0x40057a : add 0xffffffffffffffd8(%rbp),%rax (gdb) 0x0000000000400576 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x400576 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x400576 : shl $0x3,%rax 0x40057a : add 0xffffffffffffffd8(%rbp),%rax 0x40057e : mov (%rax),%rax (gdb) 0x000000000040057a 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x40057a 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40057a : add 0xffffffffffffffd8(%rbp),%rax 0x40057e : mov (%rax),%rax 0x400581 : mov %rax,(%rdx) (gdb) 0x000000000040057e 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x40057e 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40057e : mov (%rax),%rax 0x400581 : mov %rax,(%rdx) 0x400584 : mov 0xffffffffffffffe0(%rbp),%rax (gdb) 0x0000000000400581 83 taulu[ivasen] = taulu[ioikea]; 5: /x $rip = 0x400581 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400581 : mov %rax,(%rdx) 0x400584 : mov 0xffffffffffffffe0(%rbp),%rax 0x400588 : shl $0x3,%rax (gdb) 84 taulu[ioikea] = tmp; 5: /x $rip = 0x400584 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400584 : mov 0xffffffffffffffe0(%rbp),%rax 0x400588 : shl $0x3,%rax 0x40058c : mov %rax,%rdx (gdb) 0x0000000000400588 84 taulu[ioikea] = tmp; 5: /x $rip = 0x400588 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400588 : shl $0x3,%rax 0x40058c : mov %rax,%rdx 0x40058f : add 0xffffffffffffffd8(%rbp),%rdx (gdb) 0x000000000040058c 84 taulu[ioikea] = tmp; 5: /x $rip = 0x40058c 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40058c : mov %rax,%rdx 0x40058f : add 0xffffffffffffffd8(%rbp),%rdx 0x400593 : mov 0xfffffffffffffff8(%rbp),%rax (gdb) 0x000000000040058f 84 taulu[ioikea] = tmp; 5: /x $rip = 0x40058f 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40058f : add 0xffffffffffffffd8(%rbp),%rdx 0x400593 : mov 0xfffffffffffffff8(%rbp),%rax 0x400597 : mov %rax,(%rdx) (gdb) 0x0000000000400593 84 taulu[ioikea] = tmp; 5: /x $rip = 0x400593 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400593 : mov 0xfffffffffffffff8(%rbp),%rax 0x400597 : mov %rax,(%rdx) 0x40059a : lea 0xffffffffffffffe8(%rbp),%rax (gdb) 0x0000000000400597 84 taulu[ioikea] = tmp; 5: /x $rip = 0x400597 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400597 : mov %rax,(%rdx) 0x40059a : lea 0xffffffffffffffe8(%rbp),%rax 0x40059e : incq (%rax) (gdb) 86 ivasen++; 5: /x $rip = 0x40059a 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40059a : lea 0xffffffffffffffe8(%rbp),%rax 0x40059e : incq (%rax) 0x4005a1 : lea 0xffffffffffffffe0(%rbp),%rax (gdb) 0x000000000040059e 86 ivasen++; 5: /x $rip = 0x40059e 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x40059e : incq (%rax) 0x4005a1 : lea 0xffffffffffffffe0(%rbp),%rax 0x4005a5 : decq (%rax) (gdb) 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005a1 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x4005a1 : lea 0xffffffffffffffe0(%rbp),%rax 0x4005a5 : decq (%rax) 0x4005a8 : mov 0xffffffffffffffe0(%rbp),%rax (gdb) 0x00000000004005a5 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005a5 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x4005a5 : decq (%rax) 0x4005a8 : mov 0xffffffffffffffe0(%rbp),%rax 0x4005ac : cmp 0xffffffffffffffe8(%rbp),%rax (gdb) 0x00000000004005a8 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005a8 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x4005a8 : mov 0xffffffffffffffe0(%rbp),%rax 0x4005ac : cmp 0xffffffffffffffe8(%rbp),%rax 0x4005b0 : jg 0x400524 (gdb) 0x00000000004005ac 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005ac 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000010 1: x/3i $rip 0x4005ac : cmp 0xffffffffffffffe8(%rbp),%rax 0x4005b0 : jg 0x400524 0x4005b6 : mov 0xfffffffffffffff0(%rbp),%rax (gdb) 0x00000000004005b0 77 for(ioikea=koko-1; ioikea>ivasen; ioikea--){ 5: /x $rip = 0x4005b0 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x4005b0 : jg 0x400524 0x4005b6 : mov 0xfffffffffffffff0(%rbp),%rax 0x4005ba : leaveq (gdb) 78 if (taulu[ivasen] == taulu[ioikea]){ 5: /x $rip = 0x400524 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1000000110 1: x/3i $rip 0x400524 : mov 0xffffffffffffffe8(%rbp),%rax 0x400528 : shl $0x3,%rax 0x40052c : add 0xffffffffffffffd8(%rbp),%rax (gdb) break 88 Breakpoint 2 at 0x4005b6: file malliharkka.c, line 88. (gdb) continue Continuing. Breakpoint 2, kaanna_taulukko (taulu=0x7fff122e29b0, koko=6) at malliharkka.c:88 88 return lkm_samoja; 5: /x $rip = 0x4005b6 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1010010111 1: x/3i $rip 0x4005b6 : mov 0xfffffffffffffff0(%rbp),%rax 0x4005ba : leaveq 0x4005bb : retq (gdb) stepi 89 } 5: /x $rip = 0x4005ba 4: /x $rsp = 0x7fff122e2990 3: /x $rbp = 0x7fff122e2990 2: /t $eflags = 1010010111 1: x/3i $rip 0x4005ba : leaveq 0x4005bb : retq 0x4005bc : push %rbp (gdb) 0x00000000004005bb in kaanna_taulukko (taulu=0x3, koko=-16) at malliharkka.c:89 89 } 5: /x $rip = 0x4005bb 4: /x $rsp = 0x7fff122e2998 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1010010111 1: x/3i $rip 0x4005bb : retq 0x4005bc : push %rbp 0x4005bd : mov %rsp,%rbp (gdb) 0x0000000000400672 in main (argc=1, argv=0x7fff122e2ad8) at malliharkka.c:107 107 samoja = kaanna_taulukko(testitaulu, koko); 5: /x $rip = 0x400672 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1010010111 1: x/3i $rip 0x400672 : mov %rax,0xfffffffffffffff8(%rbp) 0x400676 : mov 0xfffffffffffffff0(%rbp),%rsi 0x40067a : lea 0xffffffffffffffc0(%rbp),%rdi (gdb) 108 tulosta_taulukko(testitaulu, koko); 5: /x $rip = 0x400676 4: /x $rsp = 0x7fff122e29a0 3: /x $rbp = 0x7fff122e29f0 2: /t $eflags = 1010010111 1: x/3i $rip 0x400676 : mov 0xfffffffffffffff0(%rbp),%rsi 0x40067a : lea 0xffffffffffffffc0(%rbp),%rdi 0x40067e : callq 0x4005bc (gdb) until 111 main (argc=1, argv=0x7fffc4889078) at malliharkka.c:111 111 return 0; 5: /x $rip = 0x400696 4: /x $rsp = 0x7fffc4888f40 3: /x $rbp = 0x7fffc4888f90 2: /t $eflags = 1000000010 1: x/3i $rip 0x400696 : mov $0x0,%eax 0x40069b : leaveq 0x40069c : retq (gdb) stepi 112 } 5: /x $rip = 0x40069b 4: /x $rsp = 0x7fffc4888f40 3: /x $rbp = 0x7fffc4888f90 2: /t $eflags = 1000000010 1: x/3i $rip 0x40069b : leaveq 0x40069c : retq 0x40069d : nop (gdb) 0x000000000040069c in main (argc=-1065513656, argv=0x6f045c748) at malliharkka.c:112 112 } 5: /x $rip = 0x40069c 4: /x $rsp = 0x7fffc4888f98 3: /x $rbp = 0x4006a0 2: /t $eflags = 1000000010 1: x/3i $rip 0x40069c : retq 0x40069d : nop 0x40069e : nop (gdb) 0x0000003aaf61c40f in __libc_start_main () from /lib64/libc.so.6 5: /x $rip = 0x3aaf61c40f 4: /x $rsp = 0x7fffc4888fa0 3: /x $rbp = 0x4006a0 2: /t $eflags = 1000000010 1: x/3i $rip 0x3aaf61c40f <__libc_start_main+239>: mov %eax,%edi 0x3aaf61c411 <__libc_start_main+241>: callq 0x3aaf631950 0x3aaf61c416 <__libc_start_main+246>: mov (%rax),%ecx (gdb) 0x0000003aaf61c411 in __libc_start_main () from /lib64/libc.so.6 5: /x $rip = 0x3aaf61c411 4: /x $rsp = 0x7fffc4888fa0 3: /x $rbp = 0x4006a0 2: /t $eflags = 1000000010 1: x/3i $rip 0x3aaf61c411 <__libc_start_main+241>: callq 0x3aaf631950 0x3aaf61c416 <__libc_start_main+246>: mov (%rax),%ecx 0x3aaf61c418 <__libc_start_main+248>: mov $0x1,%edx (gdb) 0x0000003aaf631950 in exit () from /lib64/libc.so.6 5: /x $rip = 0x3aaf631950 4: /x $rsp = 0x7fffc4888f98 3: /x $rbp = 0x4006a0 2: /t $eflags = 1000000010 1: x/3i $rip 0x3aaf631950 : push %r12 0x3aaf631952 : mov 2099815(%rip),%rcx # 0x3aaf8323c0 <__exit_funcs> 0x3aaf631959 : push %rbp (gdb) 0x0000003aaf631952 in exit () from /lib64/libc.so.6 5: /x $rip = 0x3aaf631952 4: /x $rsp = 0x7fffc4888f90 3: /x $rbp = 0x4006a0 2: /t $eflags = 1000000010 1: x/3i $rip 0x3aaf631952 : mov 2099815(%rip),%rcx # 0x3aaf8323c0 <__exit_funcs> 0x3aaf631959 : push %rbp 0x3aaf63195a : mov %edi,%ebp (gdb) finish Run till exit from #0 0x0000003aaf631952 in exit () from /lib64/libc.so.6 -1 2 3 -16 2 8 8 2 -16 3 2 -1 Samoja lukuja oli 1 kpl. Program exited normally. (gdb) q