-
- Если по фиксированному адресу, то совсем легко: SciFi(341 знак., 28.06.2014 15:23 - 15:25, ссылка)
- Ага, спасибо! А можно посчитать размер файла (количество бинарных байт) и вставить полученный результат в сам файл, только не в конкретное место, а найти внутри файла идентификатор и вставить после этого идентификатора? - Молодой коллега(28.06.2014 16:13)
- Кстати, вроде бы GNU grep умеет искать последовательности байтов в двоичном файле и выводить смещение. Так что при желании можно слепить скрипт. Но лучше не надо :-) - SciFi(28.06.2014 16:43)
- Ок, про идентификатор забыли, конкретное место.. Молодой коллега(119 знак., 28.06.2014 19:32)
- Советую заглянуть в мануал. Да, слегка заморочно. Пример: SciFi(201 знак., 29.06.2014 14:43 - 14:48, ссылка)
- Ааааа. Оно работает, за пример спасибо! Молодой коллега(73 знак., 30.06.2014 11:48)
- скриптом линкера или ассемблерным файлом (и скриптом) с инструкциями dw. - fk0(28.06.2014 21:59)
- Ну, начальный можно, а конечный не уверен. Молодой коллега(17 знак., 30.06.2014 11:51)
- db, dw, dd... -- обычно (псевдо) инструкции ассемблера для размещения по адресу $ (псевдо-PC) байта, слова, двойного слова... - fk0(30.06.2014 11:54)
- Ja, ja, naturlich. - Молодой коллега(30.06.2014 12:01)
- Не понял. Я такую штуку делал для бутлоадера. В .s файле, линкуемом в самом начале бинарника (посредством .ld) было написано dw program_start, dw program_end. Как раз для последующего вычисления размера по "заголовку" программы. - fk0(30.06.2014 13:58)
- +1. Такой способ выглядит кошернее. - SciFi(30.06.2014 14:26)
- Что именно вы не поняли? Молодой коллега(317 знак., 30.06.2014 14:20)
- Да, зарезервировать адрес. Можно и в C, но это попросту сложней. Конечный будет известен после. А что тут такого. Многие адреса переменных, например, тоже будут известны после. Для того после размещения в памяти линкер пробегается по списку fk0(79 знак., 30.06.2014 14:23)
- Вопрос изначально был не про зарезервировать место, тут проблем нет, а про то как в это зарезервированное место вставить адрес последнего байта прошивки. Разве линкер это позволяет? Молодой коллега(21 знак., 30.06.2014 16:12)
- gcc точно умеет. Помнится, яр был ничем не хуже, а местами лучше, чем gcc. - SciFi(30.06.2014 16:17)
- Вопрос изначально был не про зарезервировать место, тут проблем нет, а про то как в это зарезервированное место вставить адрес последнего байта прошивки. Разве линкер это позволяет? Молодой коллега(21 знак., 30.06.2014 16:12)
- Да, зарезервировать адрес. Можно и в C, но это попросту сложней. Конечный будет известен после. А что тут такого. Многие адреса переменных, например, тоже будут известны после. Для того после размещения в памяти линкер пробегается по списку fk0(79 знак., 30.06.2014 14:23)
- Не понял. Я такую штуку делал для бутлоадера. В .s файле, линкуемом в самом начале бинарника (посредством .ld) было написано dw program_start, dw program_end. Как раз для последующего вычисления размера по "заголовку" программы. - fk0(30.06.2014 13:58)
- Ja, ja, naturlich. - Молодой коллега(30.06.2014 12:01)
- db, dw, dd... -- обычно (псевдо) инструкции ассемблера для размещения по адресу $ (псевдо-PC) байта, слова, двойного слова... - fk0(30.06.2014 11:54)
- Ну, начальный можно, а конечный не уверен. Молодой коллега(17 знак., 30.06.2014 11:51)
- Советую заглянуть в мануал. Да, слегка заморочно. Пример: SciFi(201 знак., 29.06.2014 14:43 - 14:48, ссылка)
- Grep был отличным костылем еще во времена Turbo Pascal 6.0 :) - Vladimir Ljaschko(28.06.2014 17:21)
- Ок, про идентификатор забыли, конкретное место.. Молодой коллега(119 знак., 28.06.2014 19:32)
- Найти идентификатор нельзя, да и стрёмно это: могут быть случайные совпадения. Всё остальное можно. - SciFi(28.06.2014 16:18)
- Кстати, вроде бы GNU grep умеет искать последовательности байтов в двоичном файле и выводить смещение. Так что при желании можно слепить скрипт. Но лучше не надо :-) - SciFi(28.06.2014 16:43)
- Ага, спасибо! А можно посчитать размер файла (количество бинарных байт) и вставить полученный результат в сам файл, только не в конкретное место, а найти внутри файла идентификатор и вставить после этого идентификатора? - Молодой коллега(28.06.2014 16:13)
- Если по фиксированному адресу, то совсем легко: SciFi(341 знак., 28.06.2014 15:23 - 15:25, ссылка)