Список некорректных команд(предупреждения) — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Список некорректных команд(предупреждения)

2022-09-12 17
Список некорректных команд(предупреждения) 0.00 из 5.00 0 оценок
Заказать работу

1) Загрузка Теневой матрицы (FTW) при пустом WFIFO. (ftw; n_wfifo = 0)

Сообщение симулятора:

“FTW при пустом WFIFO, ошибочный результат”

“FTW can’t get from the empty WFIFO, error result”

2) Переполняющая запись в WFIFO.

(rep <n_rep>wfifo =[ar4++]; n_wfifo + n_rep > 32)

Сообщение симулятора:

“Переполнение WFIFO, ошибочный результат”

“WFIFO overflow, error result”

3) Запись в непустое WFIFO.                      (rep 1wfifo =[ar4++]; n_wfifo > 0)

Сообщение симулятора:

“Запись в непустое WFIFO. Возможно, это ошибка”

“Write to the nonempty WFIFO. Perhaps, it is an error”

4) Обращение к памяти по нечетному адресу в векторной команде или при чтении/записи регистровой пары.

(rep 32 [ ar4++gr4 ]…; push ar0,gr0; pop ar0,gr0; ar0,gr0 = [ ar4 ];)

Сообщение симулятора:

“64-разрядный доступ по нечетному адресу. Возможно, это ошибка”

“64-bit access on odd address. Perhaps, it is an error”

5) Непустое AFIFO при завершении программы.

(rep 32 with 0;… <end_of_program>)

Сообщение симулятора:

“Непустое AFIFO при завершении программы. Возможно, это ошибка”

“Nonempty AFIFO on completion of the program. Perhaps, it is an error”

6) Непустое WFIFO при завершении программы.

(rep 32 wfifo =[ar4++];… <end_of_program>)

Сообщение симулятора:

“Непустое WFIFO при завершении программы. Возможно, это ошибка”

“Nonempty WFIFO on completion of the program. Perhaps, it is an error”

7) Неполная запись AFIFO в память.

(rep <n_rep> [ar4++]= afifo; n_rep < n_afifo)

Сообщение симулятора:

“Неполная запись AFIFO в память. Возможно, это ошибка”

“Incomplete store AFIFO in memory. Perhaps, it is an error”

8) Избыточная запись в память AFIFO.

(rep <n_rep> [ar4++]= afifo; n_rep > n_afifo)

Сообщение симулятора:

“Избыточная запись AFIFO в память. Возможно, это ошибка”

“Extra store AFIFO in memory. Perhaps, it is an error”

9) Загрузка регистра NB1 между FTW и WTW (даже, если эта загрузка не приводит к изменению регистра NB1).      

(ftw;… nb1=…; …wtw;)

Сообщение симулятора:

“Загрузка NB1 между FTW и WTW, ошибочный результат”

“Load NB1 between FTW and WTW, error result”

10) Команда взвешенного суммирования c Рабочей матрицей сформированной командой WTW с sb_wtw=sb_ftw, nb_wtw=nb_ftw, после которой были изменены регистры sb2 или nb2: (sb2 #sb_wtw) || (nb2 #nb_wtw).      (rep 32 with vsum …;)

Сообщение симулятора:

“FTW и текущая VSUM операция имеют разные разбиения (SB или NB), ошибочный результат”

“FTW operation and current VSUM operation are bounded in different ways (SB or NB), error result”

11) Каждая загрузка регистра NB1 должна быть “закрыта” командой WTW до следующей загрузки NB1 (или до выхода из программы).

(nb1=…; wtw; …nb1=…;)

Сообщение симулятора:

“Загрузка NB1 без последующей команды WTW. Возможно, это ошибка”

“Load NB1 without the subsequent WTW. Perhaps, it is an error”

12) Каждая загрузка регистра SB должна быть “закрыта” командой FTW до следующей загрузки SB (или до выхода из программы).

(sb=…; ftw; …sb=…;)

Сообщение симулятора:

“Загрузка SB без последующей FTW. Возможно, это ошибка”

“Load SB without the subsequent FTW. Perhaps, it is an error”

13) Каждая команда FTW должна быть “закрыта” командой WTW до следующей FTW (или до выхода из программы).    (ftw;… wtw;…ftw;)

Сообщение симулятора:

“FTW без последующей WTW. Возможно, это ошибка”

“FTW without the subsequent WTW. Perhaps, it is an error”

14) Каждая пара FTW;WTW должна быть “закрыта” командой взвешенного суммирования (VSUM) до следующей WTW (или до выхода из программы).         (ftw;wtw;… rep 32 with vsum, afifo,0; …wtw;)

Сообщение симулятора:

“FTW; WTW без последующей VSUM операции. Возможно, это ошибка”

“FTW; WTW without the subsequent VSUM operation. Perhaps, it is an error”

15) Каждая команда WTW должна быть “закрыта” векторной ALU операцией (арифметической или взвешенного суммирования) до следующей WTW (или до выхода из программы).       (wtw;… rep 32 with 0+1; …wtw;)

Сообщение симулятора:

“WTW без последующей векторной ALU операции. Возможно, это ошибка”

“WTW without the subsequent Vector ALU operation. Perhaps, it is an error”

16) Команде FTW должна предшествовать загрузка регистра SB.

(sb=…; ftw;)

Сообщение симулятора:

“Команде FTW должна предшествовать загрузка SB, это ошибка”

“Loading SB should precede the FTW operation, it is an error”

17) WTW команде должна предшествовать загрузка регистра NB1.

(nb1=…; wtw;)

Сообщение симулятора:

“WTW команде должна предшествовать загрузка NB1, это ошибка”

“Loading NB1 should precede the WTW operation, it is an error”

18) VSUM операции должна предшествовать пара FTW;WTW.

(ftw;wtw;… rep 32 with vsum, afifo,0;)

Сообщение симулятора:

“VSUM операции должна предшествовать FTW;WTW, это ошибка”

“FTW;WTW should precede the VSUM operation, it is an error”

19) Векторной ALU операции (арифметической или взвешенного суммирования) должна предшествовать WTW. (wtw;…rep 32 with 0+1;)

Сообщение симулятора:

“Векторной ALU операции должна предшествовать WTW, это ошибка”

“WTW should precede the Vector ALU operation, it is an error”

20) В операциях с активацией аргументов (X, Y) начальный 63-й бит регистров активации F1CR,F2CR равен 0 или последний 0-й бит равен 1. (rep 32 data = [ar4++] with activate data + activate ram;)

Сообщение симулятора:

“F1CR, F2CR: начальный (63-й) бит равен 0 или последний (0-й) бит равен 1. Возможно, это ошибка”

“F1CR, F2CR: initial 63-bit equal to 0 or last 0-bit is equal to 1. Perhaps, it is an error”

21) Переполнение стека.

(push; pop; my_func(…); (ar7<Astack0) || (Astack1<ar7))

Сообщение симулятора:

“Переполнение стека, ошибочный результат”

“Stack overflow, error result”

Инициализация эмулятора

Для инициализации эмулятора, в отладчике необходимо выполнить следующие действия:

1) загрузить библиотеку;

2) сформировать и заполнить данными структуру типа ChipMem, указатель на которую должен быть передан в качестве аргумента функции CreateDevice;

3) получить адрес функции CreateDevice;

4) запустить функцию CreateDevice. Данная функция возвращает указатель на объект типа TDbgInterface (см. ниже).

После этого отладчик может управлять работой эмулятора, используя функции интерфейса TDbgInterface

В качестве альтернативного варианта вместо функции CreateDevice можно воспользоваться функцией InitSysChipMem (см.п. 3.3). В этом случае вместо указателя на СhipMem требуется. Функция CreateDevice описана в таблице 4.4.1.

 

Таблица 4.4.1 ‑ Функция CreateDevice

Интерфейс TDbgInterface* CreateDevice (ChipMem* aChipMem)
Описание Инициализация эмулятора: выполняет следующие действия - Создает класс эмулятора - Формирует модель памяти в соответствии со структурой aChipMem - Инициализирует массив флагов обработки предупреждений.
Аргументы -
Возвращаемое значение В случае успеха: Указатель на TDbgInterface – класс главного процессора эмулятора
Примечания -

 

4.4.1 Описание структуры ChipMem и рекомендации по её заполнению

Структура ChipMem имеет следующие поля:

int m_BankNum;          // номер банков памяти

unsigned long *p_startAddr;   // массив стартовых адресов банков памяти

unsigned long *p_Size;        // массив длин банков памяти

unsigned long *p_ReadWaitTime;  // массив значений времени задержки при чтения из памяти *

unsigned long *p_WriteWaitTime;  // массив значений времени задержки при записи в память (если значение равно 0xFFFFFFFF, то память считается долько для чтения)*

unsigned long m_StackStartAddr;  // начальный адрес стека

unsigned long m_EndStackAddr;  // Конечный адрес стека

unsigned long m_Flags;       // массив флагов (флаги определяют, какие ситуации предупреждения, а какие нет)

unsigned long m_SemiHostFiles;   // максимальное кол-во файлов, которые одновременно могут быть открыты через semihosting

unsigned long m_SemiHostAddr;    // адрес семихостинга

SDRamConfig*  p_Configs;     // массив структур, описывающих временные характеристики блоков памяти

Структура SDRamConfig имеет следующие поля:

eMemBlockKind mKind;      // тип памяти (SMEM_SRAM, SMEM_SDRAM, SMEM_SSRAM)

eSSramKind mSSramLKind;  // подтип (разновидность SSRAM памяти, для других типов параметр игнорируется

uint64    mPageSize;    // размер страницы (только для SDRAM)

TCycleCount mRegenPeriod; // периуд регенерации (только для SDRAM)

TCycleCount mRegenTime;   // время регенерации(только для SDRAM)

TCycleCount mPageOpenTime; // время открытия страницы (только для SDRAM)

TCycleCount mPageCloseTime; // время закрытия страницы

double    mMulFactor;   // отношение такта памяти к такту ядра процессора

uint32    mLatency;   // время доступа к ячейки (без учёта выбора страницы и регенерации)

 

В симуляторе предусмотрена следующая   логига инициализации памяти в завивисимости от значений полей передаваемого извне указателя на экземпляр структуры ChipMem:

1) если переменная p_ReadWaitTime инициализирована значением NULL, то предполагается, что все описанные в ChipMem блоки памяти имеют нулевую задержку по обращению. При этом значение переменной p_Configs игнорируется;

2) если переменная p_ReadWaitTime инициализирована значением, отличным от NULL, но значение переменной p_Configs равно NULL, то подразумевается, что задержка по обращению к каждому блоку I определяется значением p_ReadWaitTime[I];

3) если перемные ReadWaitTime и p_Configs имеют значения, отличные от NULL, от тип каждого блока определяется в зависимости от значения p_Configs.

Отдельно следует отметить поле m_Flags. m_Flags – это битовая маска предупреждения, если бит с индексом I равен 1, то предупреждение с номером I обрабатывается. В противном случае предупреждение игнорируется симулятором. 31-й бит поля m_Flags определяет, на каком языке будет выдаваться текст предупреждения (1- русский, 0 – английский).

С помощью бита 30 поля m_Flags задаётся инстанцирование устройства Semihosting, если значение бита равно 1, то Semihosting инстанцируется по адресу m_SemiHostAddr, максимальное количество одновременно открытых файлов будет равно m_SemiHostFiles.

Функция CreateDevice описана в таблице 4.4.2.

Таблицв 4.4.2 ‑ Функция SysDestroy

Интерфейс void SysDestroy ()
Описание Уничтожает класс эмулятора Уничтожает поток эмулятора
Аргументы -
Возвращаемое значение  
Примечания -

 


Поделиться с друзьями:

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.037 с.