Форум программистов, компьютерный форум CyberForum.ru

__attribute__(section) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скачать библиотеку Intel Integrated Performance Primitives for Windows http://www.cyberforum.ru/cpp/thread1659099.html
Начал разбираться со звуком в C++ и мне посоветовали хорошую библиотеку Intel IPP. Но в инете не могу ее найти и скачать. Есть 30ти дневная версия на офф сайте Intel, но нужна "нормальная". Помогите, поделитесь ссылкой! На форуме запрещается обсуждение и поиск ломанного по. Закрыто.
C++ Передача данных между программами Здравствуйте, Уважаемые! Предо мною встала проблема. Есть две программы, которые должны связываться между собой. Точнее одна программа должна посылать другой программе данные. Раньше всё крутилось на сокетах, но в связи с некоторыми проблемами пришлось отказаться от любых протоколов, хоть как-то связанных с сетевыми. Та же проблема возникла с именованными каналами. (вкратце есть машины где... http://www.cyberforum.ru/cpp/thread1658331.html
Как считывать значение строки на экране и записывать её в переменную? C++
Здравствуйте. Есть программа прикасаться к которой нельзя. То есть она работает сама по себе. В определённой области данной программы отображается значение(цифры) нужно считать эти цифры и записать в переменную. Прошу, очень прошу о помощи. Возможно ли вообще такое сделать?. P.S. Нет, не вредоносное ПО.
Аргументы при запуске из терминала C++
Доброго времени суток! Подскажите как реализовать с наименьшими изменениями. Есть программа на C++ с switch те можно выбирать что именно выполнять, где аргумент для switch вводится через cin. Как можно выбирать аргумент еще до запуска программы из терминала, что-то типа ./main --14 где 14 это номер для switch. Заранее спасибо.
C++ Ffmpeg выдает moov atom not found если прервать процесс кодирования http://www.cyberforum.ru/cpp/thread1657486.html
имеется код выполняющий кодирование и запись видео в файл (через avio_open2 / avformat_write_header / av_interleaved_write_frame / av_write_trailer / avio_close) extern "C" { #include <libavformat/avformat.h> #include <libavdevice/avdevice.h> #include <libswscale/swscale.h> } #include <stdio.h> #include <windows.h> #include <time.h>
C++ Алгоритм обхода в игре "точки" пишу игру "точки" на с++ в VS form, по клику заполняю два вектора с точками, vector<MyPoint> One; vector<MyPoint> Two; мне нужно найти все области длины одной клетки и проверить если там точка из другого вектора точек, не могу придумать алгоритм обхода, прощу помочь как можно скорее!! https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%87%D0%BA%D0%B8_(%D0%B8%D0%B3%D1%80%D0%B0) пробовал построение... подробнее

Показать сообщение отдельно
Hans_
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 4
12.02.2016, 08:02  [ТС]     __attribute__(section)
Ну во первых это не exe, а hex для микроконтроллера, объем памяти которого очень ограничен 4к RAM и 128к TEXT, в которую едва влезают сами переменные, а тут еще нужно разместить их описание для возможности сохранения, журналирования, доступа через экран и протоколы связи. для этого и построена такая сложная система генерации описания всех переменных.
Во вторых, что можно сгенерировать doxygen-ом. Система сложная дереровидная, возможно даже с замкнутыми ветвями.
Второй пример для чего это нужно
Если несколько модулей:
- Боард, у которого есть параметры, которые он хочет сохранять (яркость экрана, журналирование включения и выключения устройства и т.п)
- Апликейшин, у которого если свои, важные для него параметры (сетевой адрес, пароли доступа и т.п.)
- Хал, со своими параметрами (Подключенные модули, калибровочные значения и т.п.)
- Система с параметрами (типы датчиков, контролируемые параметры, события и т.п.)
Каждый такой модуль создает свой DescriptionList и помещает указатель на него в общий List путем размещения указателя в заранее известную секцию, а программа при работе видя этот массив знает как с ним взаимодействовать.
Допустим, нужно подключить новый модуль, например протокол общения с сервером или панелью оператора. присоединенный модуль автоматически пропишет свой интерфейс в DescriptionList.
А с учетом вышеописанных ограничений это все должно компактно укладываться в память контроллера, а значит все должен выполнять компилятор (C++11 в это очень помог со своим constexpression и прочими фишками).
Наверное размещение такой сложной системы в маленький контроллер выглядит глупо, но такава судьба.
А самая главная задача - уменьшить вероятность ошибок программиста переложив часть рутины на компилятор.

Добавлено через 4 часа 4 минуты
с помощью ассемблерной вставки смог достать указатель на секцию
C++
1
2
3
4
5
6
7
8
const char data1[] __attribute__((section("MyData"))) __attribute__((used)) = "0000";
const char data2[] __attribute__((section("MyData"))) __attribute__((used)) = "1111";
int main(){
    asm volatile (
        "LDI r24, lo8(MyData) \n"
        "LDI r25, hi8(MyData) \n"
    );
};
Остается вопрос как получить размер?

Добавлено через 16 часов 37 минут
или такой способ
C++
1
extern "C" const void* MyData;
Но здесь также невозможно вычислить размер секции
 
Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru