реклама на сайте
подробности

 
 
> Компактный бинарный файл
grisha_scorpion
сообщение Jun 7 2013, 15:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



После сборки проекта с использованием IAR на выходе получаю бинарный файл. В проекте используется глобальная строковая переменная, например: const char d[]={"qwexxxxasd"};
В бинарнике пытаюсь найти этот текст qwexxxxasd. Но вместо этого в бинарнике располагается: 'q','w','e',0xFC,'x',0x0C,'a','s','d' То есть IAR вместо 4-х символов 'x' в целях сокращения кода располагает какие то спецсимволы. Где можно узнать инфу по данному вопросу и как сделать так, чтобы в бинарнике у меня располагался полностью текст: qwexxxxasd?

Сообщение отредактировал grisha_scorpion - Jun 7 2013, 15:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
grisha_scorpion
сообщение Jun 9 2013, 16:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-08-10
Пользователь №: 59 074



Прошу прощения что не был в теме. Для чего мне всё это нужно: массив симоволов для меня - спец инфа(версия программы, дата создания и тд). Т.е. в бинарнике нужна полная несокращенная инфа. Анализируя этот бинарник, я определяю для себя всю специнфу.

- Если убрать полностью оптимизацию, то идет такое же сокращение моего массива.
- Соглашусь с тем что в стартапе при инициализации этой переменной идет полное копирование.
- const я привёл для примера. без const тоже самое.

Как у меня всё это реализовано: На самом деле у меня целая структура. Массив привел для примера. В этой структуре вся специнфа по программе. Соответсвенно если я объявляю эту структуру, то после компиляции она в бинарнике отражается, причем в произвольном месте. Так вот анализируя весь бинарник я нахожу строго определенную для меня последовательность(я использую ===), и всё что после этих трёх = я считаю специнфой с длиной тоже заданной мной.
Код
struct program_version
{
char start[4];
char name[10];
char version[3];
char sub_version[3];
char date[12];
char time[9];
char coment[30];
};

#define NAME          "loader"
#define COMMENT   "Специнфа по программе"

struct program_version ver = {"===", NAME, "01", "04", __DATE__,  __TIME__, COMENT};

Вопрос ко всем: кто как реализовывал тему с помещением специнфы в свой бинарник для дальнейшего его использования?
Проблема в том что компилятор в бинарник помещает переменную структуры в сокращенном виде(вместо 71 байта(4+10+3+3+12+9+30) у него может быть любое число в зависимости от текста), причем сокращает ту последовательность символов что повторяется 3 раза и более. С учетом всех этих сокращений на выходе я всегда буду иметь не строго фиксированную длину и соответственно возникает проблема извлечения полезной для меня инфы.


Вижу следующие пути решения этой ситуации:
1) узнать алгоритм сжатия и расжатия бинарного файла и применять его самому для извлечения полезной для меня инфы
2) установить какой то спецификатор к перемнной, который не будет сжимать в бинарнике переменную

Как реализовать эти 2 пункта я не знаю. Поэтому прошу помощи

Сообщение отредактировал IgorKossak - Jun 9 2013, 19:12
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 9 2013, 18:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(grisha_scorpion @ Jun 9 2013, 20:52) *
2) установить какой то спецификатор к перемнной, который не будет сжимать в бинарнике переменную

Спецификатор __flash
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- grisha_scorpion   Компактный бинарный файл   Jun 7 2013, 15:25
- - aaarrr   Поищите в документации что-нибудь на тему "RW...   Jun 7 2013, 15:50
- - Палыч   Не понятно: что же Вы хотите в конце-концов получи...   Jun 7 2013, 16:10
- - Fujitser   Цитата(grisha_scorpion @ Jun 7 2013, 21:2...   Jun 9 2013, 06:30
- - Непомнящий Евгений   aaarrr, а такое сжатие действительно возможно? Эт...   Jun 9 2013, 09:08
|- - aaarrr   Цитата(Непомнящий Евгений @ Jun 9 2013, 13...   Jun 9 2013, 09:48
|- - Непомнящий Евгений   Цитата(aaarrr @ Jun 9 2013, 13:48) Разуме...   Jun 9 2013, 10:39
|- - aaarrr   Цитата(Непомнящий Евгений @ Jun 9 2013, 14...   Jun 9 2013, 10:45
|- - scifi   ТС пропал, а заниматься телепатией в попытке угада...   Jun 9 2013, 11:00
|- - scifi   Компилятор/линкер могут сжимать информацию для ини...   Jun 9 2013, 17:12
||- - grisha_scorpion   Цитата(scifi @ Jun 9 2013, 20:12) Компиля...   Jun 9 2013, 17:58
|- - grisha_scorpion   Цитата(Палыч @ Jun 9 2013, 21:35) Специфи...   Jun 9 2013, 19:46
|- - aaarrr   Цитата(grisha_scorpion @ Jun 9 2013, 23:4...   Jun 9 2013, 21:17
|- - grisha_scorpion   Цитата(aaarrr @ Jun 10 2013, 00:17) А док...   Jun 9 2013, 21:40
|- - aaarrr   Цитата(grisha_scorpion @ Jun 10 2013, 01...   Jun 10 2013, 21:33
- - grisha_scorpion   С учётом всех предложений сделал следующее: 1)уст...   Jun 13 2013, 09:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01566 секунд с 7
ELECTRONIX ©2004-2016