|
разместить эпилог и пролог в секции |
|
|
|
 |
Ответов
|
May 9 2012, 21:06
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(_Артём_ @ May 10 2012, 00:52)  А зачем это делать? если скажу, то будет полемика на 100 страниц что "так не принято делать" А вообще, в голову засела идея реализовать APP + BOOTLOADER в рамках одного проекта все работает, пока очистка флеши не затирает операции по работе с стеком при вызове функций (эпилоги-прологи) пока как вариант, попробовал фунции секции бутлодыря определять с __task и ручками прописывать сохранение в стек. Но для портирования на разные AVRки ручной способ это не есть гуд
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
May 10 2012, 07:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(_Артём_ @ May 10 2012, 00:44)  А в каком сегменте находятся прологи-эпилоги? судя по дизасму в APP Цитата(_Артём_ @ May 10 2012, 00:44)  Этот сегмент нужно поместить куда надо. логично, про это и был топик. Вопрос повторять надеюсь не надо Цитата(_Артём_ @ May 10 2012, 00:44)  P.S. прологи-эпилоги у ИАРа как-то по другому называются. Как? так и называются EPILOGUE и PROLOGUE Цитата(KRS @ May 10 2012, 01:55)  да не проблема - напишите свой стартап и размещайте где угодно! написал для сегмента лодыря свой стартап иннициализации стеков. Но при вызове вложенных функций вызывается стандартные иаровские эпилоги-прологи по сохранению в стек. Мне нужно РЕАЛИЗАЦИЮ этих эпилогово-прологов ПЕРЕНЕСТИ в секцию BOOTLOADER Цитата(KRS @ May 10 2012, 01:55)  Но только есть нюансы - если собирается как один проект сразу и бутлоадер и приложение то нельзя использовать библиотеку (ее можно отключить) потому что у бутлоадера и приложения должны быть свои копии библиотеки иначе при при последующей компиляции только приложения все съедет. что подразумевается под стадндартными библиотеками ? в секторе BOOTLOADER не используются memcpy, strcmp и прочее-прочее
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
May 10 2012, 10:00
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(_Артём_ @ May 10 2012, 12:29)  В каком документе такие названия? Не могу найти таких... в доках нет описания. Это надо в дизасме смотреть. Как выглядит - картинку приаттачил суть - перемесить текущие занятые регистры в стек, выполнить вычисления в освобожденных, и по выходу из функции вернуть из стека "глубина" зависит от того - как много локальных переменных используется. Далее, по метке самого большой глубины можно в маp-файле увидеть те самы жирные функции
Эскизы прикрепленных изображений
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
May 10 2012, 19:11
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(scifi @ May 10 2012, 14:19)  Занятие это довольно бессмысленное, и я бы даже сказал вредное. это как раз очень полезно! потому что помогает правильно написать критические по времени куски кода. и иногда разобраться с собственными ошибками. megajohn,эти прологи и эпилоги появляются только при оптимизации по размеру! (по крайней мере так было раньше) у АВР регистров много и вызывая эти функции с нужной точки входа можно здорово сэкономить место если есть много функций которые много локальных переменных в регистрах используют! А вообще у вас данная конфигурация будет корректно собираться только в том случае если вы не используете библиотеку вообще! В настройках ИАР это можно сделать. В других случаях надо делать две конфигурации, это кстати можно сделать и в одном проекте!
|
|
|
|
|
May 10 2012, 19:30
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(KRS @ May 10 2012, 22:11)  эти прологи и эпилоги появляются только при оптимизации по размеру! (по крайней мере так было раньше) Может так раньше и было, но в map-файле такое вижу: Код ====================== CODE Relative segment, address: CODE 000006F8 - 000006F9 (0x2 bytes), align: 1 Segment part 8. ENTRY ADDRESS REF BY ===== ======= ====== ?PROLOGUE8_L09 000006F8 __call_ctors (?cppinit) ------------------------------------------------------------------------- CODE Relative segment, address: CODE 000006FA - 000006FB (0x2 bytes), align: 1 Segment part 9. Intra module refs: ?PROLOGUE8_L09 ENTRY ADDRESS REF BY ===== ======= ====== ?PROLOGUE7_L09 000006FA ------------------------------------------------------------------------- Оптимизация по скорости.
|
|
|
|
Сообщений в этой теме
megajohn разместить эпилог и пролог в секции May 9 2012, 20:41  _Артём_ Цитата(megajohn @ May 10 2012, 00:06) и н... May 9 2012, 21:44    KRS Цитата(megajohn @ May 10 2012, 11:03) нап... May 10 2012, 07:19         KRS Цитата(_Артём_ @ May 10 2012, 23:30) Може... May 10 2012, 19:47          megajohn Цитата(KRS @ May 10 2012, 22:47) так это ... May 11 2012, 07:15  scifi Цитата(megajohn @ May 10 2012, 01:06) есл... May 10 2012, 07:19 Сергей Борщ QUOTE (megajohn @ May 10 2012, 10:03) что... May 10 2012, 08:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|