П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое







Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 30484 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 9551 раз(а).

Учебник HTML.
Просмотров 16492 раз(а).

Руководство по PHP5.
Просмотров 8320 раз(а).

Хостинг через призму DNS.
Просмотров 12026 раз(а).

Подборка текстов стандартных документов.
Просмотров 12654 раз(а).

Учебник PHP - Самоучитель
Просмотров 8811 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 6470 раз(а).

Внешние атаки...
Просмотров 5551 раз(а).

Учебник PHP.
Просмотров 6983 раз(а).

SSI в примерах.
Просмотров 4079 раз(а).






 
 

Дизассемблирование

gdb позволяет получить ассемблерный код, соответствующий функциям main() и toto() :

>>gcc -g -o fct fct.c
>>gdb fct
GNU gdb 19991004
Copyright 1998 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 "i386-redhat-linux"...
(gdb) disassemble main                    //main
Dump of assembler code for function main:

0x80483f8 <main>:    push   %ebp //пролог
0x80483f9 <main+1>:  mov    %esp,%ebp
0x80483fb <main+3>:  sub    $0x4,%esp

0x80483fe <main+6>:  movl   $0x1,0xfffffffc(%ebp)

0x8048405 <main+13>: push   $0x2 //вызов
0x8048407 <main+15>: push   $0x1
0x8048409 <main+17>: call   0x80483d0 <toto>


0x804840e <main+22>: add    $0x8,%esp //возврат из toto()

0x8048411 <main+25>: movl   $0x0,0xfffffffc(%ebp)
0x8048418 <main+32>: mov    0xfffffffc(%ebp),%eax

0x804841b <main+35>: push   %eax     //вызов
0x804841c <main+36>: push   $0x8048486
0x8048421 <main+41>: call   0x8048308 <printf>


0x8048426 <main+46>: add    $0x8,%esp //возврат из printf()
0x8048429 <main+49>: leave            //возврат из main()
0x804842a <main+50>: ret

End of assembler dump.
(gdb) disassemble toto                    //toto
Dump of assembler code for function toto:

0x80483d0 <toto>:     push   %ebp   //пролог
0x80483d1 <toto+1>:   mov    %esp,%ebp
0x80483d3 <toto+3>:   sub    $0xc,%esp

0x80483d6 <toto+6>:   mov    0x8048480,%eax
0x80483db <toto+11>:  mov    %eax,0xfffffff8(%ebp)
0x80483de <toto+14>:  mov    0x8048484,%al
0x80483e3 <toto+19>:  mov    %al,0xfffffffc(%ebp)
0x80483e6 <toto+22>:  movl   $0x3,0xfffffff4(%ebp)
0x80483ed <toto+29>:  movl   $0x0,0xc(%ebp)
0x80483f4 <toto+36>:  jmp    0x80483f6 <toto+38>

0x80483f6 <toto+38>:  leave         //возврат из toto()
0x80483f7 <toto+39>:  ret

End of assembler dump.
Инструкции, не отмеченные цветом, соответствуют нашим програмным инструкциям, таким, например, как присваивание.

Назад | Содержание | Вперед



 



Copyright © 2005-2007 Project.Net.Ru