[an error occurred while processing this directive] [an error occurred while processing this directive]
Keil C51: определение типа переменной по виду сгенеренного кода.. как?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Glut 16 ноября 2001 г. 16:27

Hi All.

Можно как-нибудь распознать по коду, сгенереному Keil C51 типы переменных? например

CLR A
MOV DPTR, #ABCDh
MOVX DPTR, A
INC DPTR
MOVX DPTR, A

может быть "xdata int var; var=0" или "xdata char var1; xdata char var2; var2=var1=0;"

может, есть тут знаток KeilC51 или просто умный человек, который мог бы мне подсказать какие-нибудь tips'n'tricks как можно определить тип переменной по дизасемблированному коду, который был сгенерен KeilC51?
Понятно, что можно понять что переменная - long, если есть что-нибудь типа lcall ?C?LLDSTXTADA, а вот по операциям, например если переменная int, то "clr A" идет перед "MOV DPTR, #", а если char то после, те. KeilC51 генерит именно так а не эдак? ну что-нибудь в этом роде. Буду очень признателен за любые идеи. И кстати, может как-то по коду можно понять signed или unsigned, например Си-операция XXXXX для signed генерится в одно, а для unsiged в другое?

И еще вопрос, в каком случае switch () превращается в jump-table?

Заранее всем спасибо!

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru