From: Sergey Stepanov <dlagovna@mail.ru> To: smoke-room@lists.altlinux.org Subject: [room] objdump-дизассемблирование, странные call-конструкции Date: Sun, 21 May 2006 01:06:54 +0400 Message-ID: <446F84EE.60703@mail.ru> (raw) Здравствуйте товарищи. Если есть тута программеры, помогите плиз. Вот мне потребовалось дизассемблировать несколько o-файлов, и сразу наткнулся на непонятную вещь. Дизассемблирование провожу через команду objdump -d ./file.o И вот что вижу в коде (в других функциях тоже есть такие же конструкции) Код 000012b8 <AllArraysInit>: 12b8: 55 push %ebp 12b9: 89 e5 mov %esp,%ebp 12bb: 83 ec 08 sub $0x8,%esp 12be: e8 fc ff ff ff call 12bf <AllArraysInit+0x7> 12c3: c7 05 00 00 00 00 01 movl $0x1,0x0 12ca: 00 00 00 12cd: c7 05 00 00 00 00 01 movl $0x1,0x0 12d4: 00 00 00 12d7: 83 ec 0c sub $0xc,%esp 12da: 6a 01 push $0x1 12dc: e8 fc ff ff ff call 12dd <AllArraysInit+0x25> 12e1: 83 c4 10 add $0x10,%esp 12e4: c7 05 00 00 00 00 00 movl $0x0,0x0 12eb: 00 00 00 12ee: c7 05 08 00 00 00 0d movl $0xd,0x8 12f5: 00 00 00 12f8: c7 05 0c 00 00 00 00 movl $0x0,0xc 12ff: 00 00 00 ... Меня беспокоят конструкции "e8 fc ff ff ff". Какой-то странный call, который указывает на середину этой же иструкции - по идее, после этой команды должен начать выполняться код "fc ff ff ff ...". Какой в этом смысл? Что обозначают эти странные call - вызовы? Сразу скажу, что исходный текст был написан на чистом C, без всяких ухищрений в стиле анти-дебуггинга. Сейчас код утерян, а функции нужно немного изменить, а я не могу начать из-за вот этой непонятки. Может это какая-то хитрая оптимизация компилера? Тогда какому asm-коду этоти команды call xxxx эквивалентны? (В поисковиках нахожу только что народ декомпилирует o-шники через objdump, что-то там рассматривает, у многих тоже всречается эта конструкция, но никто не обращает на нее внимания). -- Со всяческими пожеланиями, Сергей. http://xi.net.ru
next reply other threads:[~2006-05-20 21:06 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-05-20 21:06 Sergey Stepanov [this message] 2006-05-20 21:31 ` Yuri N. Glibovetz 2006-05-21 8:57 ` Artem 2006-05-22 9:10 ` [room] objdump- дизассемблирование , странные call- конструкции Sergey Stepanov 2006-05-22 10:19 ` Damir Shayhutdinov 2006-05-22 11:17 ` Sergey Stepanov 2006-05-22 17:12 ` Sergey Stepanov 2006-05-22 17:28 ` Andrey Rahmatullin 2006-05-22 17:44 ` Sergey Stepanov 2006-05-22 17:55 ` Andrey Rahmatullin 2006-05-22 18:17 ` Sergey Stepanov 2006-05-22 18:23 ` Andrey Rahmatullin 2006-05-22 19:00 ` Sergey Stepanov 2006-05-23 5:27 ` Andrey Rahmatullin 2006-05-22 17:30 ` Sergey Stepanov 2006-05-22 17:44 ` Damir Shayhutdinov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=446F84EE.60703@mail.ru \ --to=dlagovna@mail.ru \ --cc=smoke-room@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Культурный офтопик This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \ smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com public-inbox-index smoke-room Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.smoke-room AGPL code for this site: git clone https://public-inbox.org/public-inbox.git