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

О проекте

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

MySQL

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

Хостинг

Другое







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

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

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

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

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

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

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

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

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

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

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

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






 
 



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

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-2011 Project.Net.Ru