|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5004/75.151 29 Aug 2006 16:34:21 To : Grishka Chervonets Subject : получить чистый бинарник -------------------------------------------------------------------------------- DEO>> если теперь objdump'ом дезасемблять то кода, инициализирующего DEO>> переменную a мы не увидим: GC> GC> кода быть и не должно, статические данные инициализируются при загрузке. в МК-архитектурах инициализация идет именно в стартапе т.к. программа во флэш располагается, а данные в ОЗУ. gcc-avr такой код генерит как-то :) DEO>> $arm-linux-objdump -d obj/test.elf DEO>> DEO>> obj/test.elf: формат файла elf32-littlearm DEO>> DEO>> Диассемблирование раздела .text: DEO>> DEO>> 00000000 <main>: DEO>> 0: e59f200c ldr r2, [pc, #12] ; 14 <.text+0x14> DEO>> 4: e5923000 ldr r3, [r2] DEO>> 8: e2833001 add r3, r3, #1 ; 0x1 DEO>> c: e5823000 str r3, [r2] DEO>> 10: eafffffb b 4 <main+0x4> DEO>> 14: 00008018 andeq r8, r0, r8, lsl r0 GC> ^^ ^^^^ GC> если я правильно понял эту китайскую грамоту, адрес переменной i хранится GC> в ячейке со смещением 0x14, т.е. i расположена в озу по адресу 0x8018 GC> и нужна явная инициализация ага, надо научиться компилятором ето делать :) DEO>> ну а в листинге, созданном при компиляции main.c в main.o есть секция: DEO>> DEO>> 9 .Ltext0: DEO>> 10 .global i DEO>> 11 .data DEO>> 12 .align 2 DEO>> 13 .type i, %object DEO>> 14 .size i, 4 DEO>> 15 i: DEO>> 16 0000 05000000 .word 5 DEO>> 17 .text DEO>> 18 .align 2 DEO>> 19 .global main DEO>> 20 .type main, %function DEO>> DEO>> то есть надо как-то заставить сборщик по данному блоку включить код DEO>> инициализации? или написать код инициализации самому, как? GC> GC> наверно, вот так: GC> GC> int i; /* .data -> .bss */ GC> GC> int main(void) GC> { GC> i=5; GC> ... GC> GC> PS а не является ли программирование пиков на сях своего рода извратом ;) а кроме как на Сях и не удобно ни на чем (кроме Сей в 99% случаев есть только АСМ который нахфиг) --- Mutt/1.5.11+cvs20060403 * Origin: У кошки четыре ноги. Позади у неё длинный хвост. Hо трогать ее не моги! За её малый рост. (2:5004/75.151) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/392600c18ac0.html, оценка из 5, голосов 10
|