Культурный офтопик
 help / color / mirror / Atom feed
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


             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