Предположим, у меня есть область памяти 128 КБ.В моих директивах компоновщика я разделил этот регион на три раздела:
- .section_text
- .section_data
- .section_bss
Размеркаждой секции неизвестна предварительная компиляция, но я ограничил .section_bss использовать все оставшееся пространство в области памяти после выделения .section_text и .section_data.
Есть ли способ объявить массив C, которыйзанимает все доступное пространство в .region_bss?Предположим, что это единственное, что использует .region_bss, поэтому он может безопасно использовать весь регион.Для примера, но, очевидно, неправильно:
char entire_bss[sizeof(.region_bss)];
Вот мои предварительные ответы на некоторые ожидаемые ответы.Во-первых, я знаю, что sizeof () не работает так.Я просто использую это, чтобы донести идею.Во-вторых, предположим, что это должно быть сделано с массивом, а не с указателями (решение с помощью указателей возможно и довольно просто).В-третьих, я знаю, что могу получить начальный и конечный адреса .region_bss, но я не знаю ни одного способа использовать их для определения размера моего массива.По крайней мере, не так, как это работает в C.
Возможно, нет никакого способа сделать это, но я надеюсь, что какой-то гений это понял.Дополнительный кредит, если вы можете заставить его работать с набором инструментов Green Hills.