Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Блин. Кто тут в keile и 51 разбирается? Он чё, idata использовать не умеет? Получается если только руками переменные рассовывать, типа int idata i; ..
Отправлено
Dr.Alex
14 августа 2007 г. 10:49
Составить ответ
|
Вернуться на конференцию
Ответы
Как это не умеет? вот именно через char idata i или int idata i и умеет
—
Elektronik
(14.08.2007 13:21:36
194.85.99.225
,
пустое
)
Ответ:
—
Elektronik
(14.08.2007 13:24:17
194.85.99.225
, 166 байт)
"""так это и я так могу"""(с).. :-))) Компилировать и линковать - тоже самому? :-)) Эх, где ж суперкомпилятор от Туамосеса.. :-(
—
Dr.Alex
(14.08.2007 13:28:35
62.231.6.116
,
пустое
)
Так указанием на тип переменной компилятор выбирант тип доступа. Наример если указать pdata то доступ к верхней памяти будет через @R0, а если указать xdata - то через DPTR. То же и с data и idata. Очень логично и продумено. Вот бы и в SDCC так же!
—
Mk - 51
(14.08.2007 14:37:55
213.232.255.182
,
пустое
)
А Вы хотели чтобы он по своему усмотрению выбирал область памяти?
—
sda
(14.08.2007 13:37:9
217.199.225.30
,
пустое
)
Типо да.. :-о
—
Dr.Alex
(14.08.2007 13:39:53
62.231.6.116
,
пустое
)
Я idata стараюсь не трогать без лишней надобности, о стеке при больших программах не думаешь...
—
sda
(14.08.2007 13:50:0
217.199.225.30
,
пустое
)
Все дело в том, что архитектурно 51 неприспособлен для написания ПО на ЯВУ типа Си. При реализации компилятора на нем приходится выбирать между соответствием стандарту и эффективностью реализации.
—
vmp
(14.08.2007 12:21:48
87.245.155.195
, 401 байт)
Не понял ответы коллег...
—
POV
(14.08.2007 11:44:53
213.137.239.62
, 154 байт)
Неа, дата, но не идата..
—
Dr.Alex
(14.08.2007 11:47:19
62.231.6.116
,
пустое
)
ну да :)))
—
POV
(14.08.2007 14:38:38
213.137.239.62
,
пустое
)
ТАК-ТАК.. :-))) Я ВИЖУ, МНЕНИЯ РАЗОШЛИСЬ.. :-))
—
Dr.Alex
(14.08.2007 11:04:39
62.231.6.116
,
пустое
)
Дык наверно как и в прошлых 51-компиляторах, в зависимости от memory model он по умолчанию выбирает для переменных одну из областей (отдельно для locals и global), а изменять можно явным указанием?
—
Quasy
(14.08.2007 11:01:7
80.243.9.34
,
пустое
)
У него три типа моделей. small - переменные в data, compact - в pdata и large - в xdata. В idata просто так не пускает. И правильно IMHO
—
Mebius
(14.08.2007 11:03:52
195.28.47.34
,
пустое
)
А вот как было в ICC8051. По-моему, тоже неплохо(+).
—
Quasy
(14.08.2007 11:10:25
80.243.9.34
, 266 байт)
То есть, одновременно и дата и идата никогда не используются? Блин, достал меню этот 51..
—
Dr.Alex
(14.08.2007 11:13:3
62.231.6.116
,
пустое
)
Пихать силой. Коленкой. Киянком в конце концов.
—
Quasy
(14.08.2007 11:20:24
80.243.9.34
,
пустое
)
А смысл? Как компиллер будет реализовывать my_vol = idata_vol? Ведь все равно через указатель (r0, r1) ? Т.е. не совсем честно, прально будет обращаться к идате тока через указатель на нее(-)
—
RUAL
(14.08.2007 11:42:19
217.20.82.57
,
пустое
)
А, вот Вы о чем. Да, по крайней мере, это логично. Но тогда и к xdata тоже прямого доступа нельзя давать, а только через указатель.
—
Quasy
(14.08.2007 12:06:22
80.243.9.34
,
пустое
)
Получается так, но если память мне верна, то при прямом обращении в идату в кейл 7.20 операция выполнялась со значением СФР. Т.е. компиллер не маскирует косвенное обращение к идате, а действует "в лоб".
—
RUAL
(14.08.2007 13:04:22
217.20.82.57
,
пустое
)
Точнее "при попытке прмого обращения"
—
RUAL
(14.08.2007 13:05:53
217.20.82.57
,
пустое
)
а чем плох ручной вариант, то? Всё-равно чисто по стандарту Си написать не получится.
—
Mebius
(14.08.2007 11:19:50
195.28.47.34
,
пустое
)
То есть, ему легче использовать хдату/рдату?
—
Dr.Alex
(14.08.2007 11:05:48
62.231.6.116
,
пустое
)
Он idatу для стека бережёт. vmp же ответил.
—
Mebius
(14.08.2007 11:07:9
195.28.47.34
,
пустое
)
Хреновый ответ. То есть, если идаты вообще нет, то ему для стека пары байт хватит, а если есть, то все 128 забирает.. :-)))
—
Dr.Alex
(14.08.2007 11:08:44
62.231.6.116
,
пустое
)
Всё-равно в конечном итоге всё зависит от человека.
—
Mebius
(14.08.2007 11:17:1
195.28.47.34
,
пустое
)
Да. Туда лучше класть мелкие массивы, чтобы не было потерь. Ну и стек, конечно.
—
vmp
(14.08.2007 10:59:48
87.245.155.195
,
пустое
)
Умеет. Только выбрать в какую память данные пихать
—
Звероящер
(14.08.2007 10:55:44
80.66.68.158
,
пустое
)
Вроде. Хотя давно не пользовал. К idate обращения по другому.
—
-=ВН=-
(14.08.2007 10:54:36
193.125.71.140
,
пустое
)
А нефиг idatу засорять :) Кажись сначала кидает в дату, потом, если места нет в idata.
—
Mebius
(14.08.2007 10:53:22
195.28.47.34
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 63:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru