|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 30, 2004 10:01:23 Приветствую! вот какую штуку я заметил. Имеем какую-нить совсем простенькую программку. Ну например: xor %eax,%eax push %eax pushl $0x6c77656b movl %esp,%ebx pushl $0777 pushl %ebx pushl $136 push %eax int $0x80 xor %eax,%eax push $1 push %eax int $0x80 далее делаем: % objdump -D filename filename: file format elf32-i386 Disassembly of section .text: 08048074 <_start>: 8048074: 31 c0 xor %eax,%eax 8048076: 50 push %eax 8048077: 68 6b 65 77 6c push $0x6c77656b 804807c: 89 e3 mov %esp,%ebx 804807e: 68 ff 01 00 00 push $0x1ff 8048083: 53 push %ebx 8048084: 68 88 00 00 00 push $0x88 8048089: 50 push %eax 804808a: cd 80 int $0x80 804808c: 31 c0 xor %eax,%eax 804808e: 6a 01 push $0x1 8048090: 50 push %eax 8048091: cd 80 int $0x80 8048093: 90 nop ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Disassembly of section .data: вот получили дисассемблерный листинг. Я посмотрел листинги еще наскольких маленьких программок, и всегда в конце добавляется nop. Компилятор as (v 2.12.1). Линковщик - ld (v 2.12.1). Вопрос: а почему/зачем в конец всегда добавляется этот самый nop? заранее спасибо за ответы :-) |
|
|
Дата: Июн 30, 2004 10:05:44 А он туда кем добавляется ассемблером, линковщиком или дизассемблером? |
|
|
Дата: Июн 30, 2004 10:31:18 А черт его знает :) Но явно не дисассемблером. Если в hex`е бинарник смотреть, то один/несколько 90h в конце .text сразу в глаза бросаются :) |
|
|
Дата: Июн 30, 2004 10:54:28 > всегда в конце добавляется nop Всегда ли? Смахивает на выравнивание функции до четного адреса. |
|
|
Дата: Июн 30, 2004 10:58:22 Dr.Golova Ага, более того, длина секции становится 0x20. |
|
|
Дата: Июн 30, 2004 12:41:22 Про выравнивание я тоже подумал. Сегодня вечером поэкспериментирую, и завтра расскажу что получилось. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069 |