
Примеры
C:0x100 |
/* Адрес 0x100 в памяти программ */ |
I:100 |
/* Адрес 0x64 во внутреннем ОЗУ 8051 */ |
X:0FFFFH |
/* Адрес 0xFFFF во внешней памяти данных */ |
B:0x7F |
/* Битовый адрес 127 или 2FH.7 */ |
B2:0x9000 |
/* Адрес 0x9000 банке программы №2 */ |
Спецификации типа
µVision2 автоматически производит неявное преобразование типов в выражениях. Вы можете указать в выражениях явное приведение к требуемому типу данных. Запись приведения типов в выражениях, используемых в отладчике, полностью соответствует правилам, принятым в языке Си. Пример:
(unsigned int) 31.2 |
/* получить беззнаковое целое 31 из вещественного значения */ |
Операторы
Отладчик µVision2 поддерживает все операторы языка программирования Си. Все операторы имеют такой же смысл, как и их Си-эквиваленты.
Различия между выражениями µVision2 и Си
Имеется ряд различий между выражениями в µVision2 и в языке программирования Си:
µVision2 не различает регистр букв в символических именах и названиях отладочных команд.
µVision2 не поддерживает преобразование выражений в типизированные указатели, такие как char * или int *. Типы указателей извлекаются из информации о символах вашей программы. Указатели не могут быть созданы в отладчике µVision2.
Вызовы функций, вводимые в окне отладчика µVision2 «Output Window – Command page», относятся к отладочным функциям. Вы не можете вызывать функции вашей программы из этой командной строки. Для получения более подробной информации см. главу 6 «Отладочные функции среды µVision2» на странице 131.
µVision2 не поддерживает объединение данных в структуры.
Примеры выражений
В следующих примерах приведены выражения, которые вводились в командной строке отладчика в окне «Output Window» на странице «Command». Также приведен соответствующий вывод для каждого примера. Все примеры проводились в отладочной сессии демонстрационной программы MEASURE.
Константа
>0x1234 |
/* Простая константа */ |
0x1234 |
/* Вывод значения */ |
|
|
>EVAL 0x1234 |
|
4660T 11064Q 1234H '...4' |
/* Вывод значения в различных системах счисления */ |
Регистр процессора
>R1 |
/* Запрос значения регистра R1 */ |
0x000A |
/* вывод значения регистра */ |
|
|
>R1 = --R7 |
/* Установить R1 и R7 равными значению R7-1 */ |
Имя функции
>main |
/* Получить адрес функции main() из MEASURE.C */ | ||
0x00233DA |
/* Ответ, функция main начинается с адреса 0x233DA */ | ||
|
| ||
>&main |
/* Аналогично предыдущему примеру */ | ||
0x00233DA |
| ||
|
| ||
>d main |
/* Команда Display: дамп памяти, начиная с адреса main */ | ||
0x0233DA: |
76 E2 00 04 76 E3 00 04 - 66 E3 FF F7 E6 B6 80 00 |
v...v...f...... | |
0x0233EA: |
E6 B7 00 00 E6 5A 40 00 - E6 D8 11 80 E6 2A 3C F6 |
.....Z@......*< | |
0x0233FA: |
E6 28 3C F6 E6 CE 44 00 - BF 88 E6 A8 40 00 BB D8 |
.(<...D.....@.. | |
0x02340A: |
E6 F8 7A 40 CA 00 CE 39 - E6 F8 18 44 CA 00 CE 39 |
..z@...9...D... |
Примеры использования адресов
>&\measure\main\cmdbuf[0] + 10 |
/* Вычисление адреса */ |
0x23026 |
|
|
|
>_RBYTE (0x233DA) |
/* Прочитать байт из памяти программ по адресу 0x233DA */ |
0x76 |
/* Ответ */ |
Пример вывода списка символических имен
>dir \measure\main /* Вывести имена, определенные в функции main() модуля MEASURE */ R14 idx . . . uint /* Вывод */ R13 i . . . uint 0x0002301C cmdbuf . . . array[15] of char |