From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <446F84EE.60703@mail.ru> Date: Sun, 21 May 2006 01:06:54 +0400 From: Sergey Stepanov User-Agent: Thunderbird 1.5 (X11/20051201) MIME-Version: 1.0 To: smoke-room@lists.altlinux.org Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: [room] =?koi8-r?b?b2JqZHVtcC3EydrB09PFzcLMydLP18HOycUsINPU0sHO?= =?koi8-r?b?ztnFIGNhbGwty8/O09TS1cvDyck=?= X-BeenThere: smoke-room@lists.altlinux.org X-Mailman-Version: 2.1.7 Precedence: list Reply-To: =?koi8-r?b?y9XM2NTV0s7ZyiDPxtTP0MnL?= List-Id: =?koi8-r?b?y9XM2NTV0s7ZyiDPxtTP0MnL?= List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 May 2006 21:10:03 -0000 Archived-At: List-Archive: Здравствуйте товарищи. Если есть тута программеры, помогите плиз. Вот мне потребовалось дизассемблировать несколько o-файлов, и сразу наткнулся на непонятную вещь. Дизассемблирование провожу через команду objdump -d ./file.o И вот что вижу в коде (в других функциях тоже есть такие же конструкции) Код 000012b8 : 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 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 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