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

 
 
> IAR C/ASM Preproc, Переменная-макрос (авто)инкримент значения
k155la3
сообщение Oct 29 2015, 15:06
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



IAR C++ MSP430
IAR ASM MSP430

Есть необходимость средствами компилятора или препроцессора (C/ASM)
выполнить "автонумерацию" (инкримент) значения поля структуры в массиве структур, определенных как const в памяти флеш.
Причем в одном и томже поле структуры должно быть обеспечено несколько "счетчиков" (в разных строках массива)


M_VAR_TY_1() - предполагаемый автонумератор.

Код
// ======== массив во флеш-памяти =============
// определен на этапе компиляции
const TyRefRec RefTbl[] =
{     
//      Код          тип    адрес в массиве, соотв-ем eTy_x
    { eID_Test,     eTy_1, M_VAR_TY_1() },
    { eID_Go5,     eTy_1, M_VAR_TY_1() },
    { eID_Go2,     eTy_1, M_VAR_TY_1() },
    { eID_Zond1,     eTy_2, M_VAR_TY_2() },
    { eID_Go4,     eTy_1, M_VAR_TY_1() },
    { eID_Go0,     eTy_2, M_VAR_TY_2() },

};

main()
{
    // массивы данных, на которые ссылается RefTbl[]
    int Arr_type_1[100]; // соотв-ет коду eTy_1
    int Arr_type_2[100]; // eTy_2
    int Arr_type_3[100]; // eTy_3
        . . . . . .

}


Мои исследования по C показали, что это сделать можно, но через жуткий и громоздкий изворот.
Поэтому эту тему с С++ я закрыл.

---------------- ???? ------------------------
А вот с ASM это должно бы решаться без проблем. Только начал курить это направление,
может кто решал такую задачу на IAR Asm ?
--------------- /???? ------------------------

Сразу отвечу на вопрос, зачем, собственно.
1. таблица может содержать под сотню строк.
2. таблица может изменяться (строки добавляются-удаляются)
3. лень вручную номеровать-переномеровать строки, темболее, что они могут быть "вперемешку".

Есть конечно, легкий и простой путь решения - "влоб" написать утилиту pre-pre-processor sm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kolobok0
сообщение Oct 30 2015, 19:47
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(k155la3 @ Oct 29 2015, 18:06) *
...средствами компилятора или препроцессора (C/ASM) выполнить "автонумерацию" (инкримент)...


боюсь спросить, а чем дэфайн не угодил? вроде как на азме лепится на раз-два(не иар). на сях не пробовал, но те-жи яйца в профиль...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 31 2015, 21:21
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Все уже изобретено до нас.
enum в X-макро.

Код
enum {
#define ERROR( num, code, name)
#include "error_list.h"
#undef ERROR
};



--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post



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

 


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


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