|
Компилятор Keil uVision2 для семейств С8051, Компилятор Keil uVision2 |
|
|
|
 |
Ответов
|
Jul 31 2007, 15:23
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Есть Keil uVision2 (по-моему лицензионная). float - без проблем, установлены dll под jtag. Весит 28М. Переносится без установки. Отладчик и компилятор произвели приятное впечатление. Могу поделиться.
|
|
|
|
|
Aug 8 2007, 16:04
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Цитата(777777 @ Aug 3 2007, 09:07)  Если не считать абсолютно уродского редактора, то у него только одна существенная проблема - переменные int и long он располагает в порядке big-endian. Редактор - субъективная вещь. Работа компилятора понимается легко, ему не надо для переменных volatile прописывать на 9-м уровне оптимизации, и приведение типов он понимает лучше, чем ИАР (ИМХО). А то что не так, как ИАР байты складирует - не проблема.
|
|
|
|
|
Aug 9 2007, 05:34
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(ISD @ Aug 8 2007, 20:04)  Редактор - субъективная вещь. Вообще-то не очень, есть вещи вполне объективные. Если ты редактируешь два файла (например, .c и .h) то переключаться между ними по Ctrl+Tab не получится - он перебирает все открытые окна. Если ты нажимаешь Ctrl+F то в окне появляется слово, на котором стоит курсор. Может это и удобно в отдельных стучаях, но в нормальных редакторах оно выделено - на тот случай если я собрался искать другое слово - когда я начну его набирать, старое сразу удалится. А здесь мне нало сначала его удалить долбя кнопку Del, а потом ввести новое. Нет нормального auto indent'а - все, что он умеет это поставить курсор в позицию, на которой начинается предыдущая строка. Нормальные редакторы понимают, что если я напечатал новую скобку { то следующая строка должна быть с отступом. Счетчик в строке состояния показывает не номер позиции, а номер символа, поэтому табуляция считается за один символ. Добавление и удаление файлов лучше бы сделать в контекстном меню окна Project Workspace, а не запускать для этого отдельное окно - впрочем, это уже не сам редактор а IDE. Цитата(ISD @ Aug 8 2007, 20:04)  приведение типов он понимает лучше, Приведение типов надо понимать не лучше или хуже, а по стандарту. А что, кто-то понимает их по-другому? Цитата(ISD @ Aug 8 2007, 20:04)  чем ИАР что есть ИАР? Цитата(ISD @ Aug 8 2007, 20:04)  А то что не так, как ИАР байты складирует - не проблема. Байты складировать компилятор должен так, как принято в данной аппаратной платформе. Я, конечно, понимаю, что это 8-разрядный процессор, но и он иногда работает с 16-разрядными словами - например, кладет в стек адрес возврата - так он это делает в порядке little-endian. А если учесть, что big-endian неэффективно для вычислений, т.к. байты суммируются или вычитаются начиная с младшего - то я вообще не понимаю зачем они приняли такой порядок в этом компиляторе.
|
|
|
|
|
Aug 11 2007, 18:11
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Цитата(777777 @ Aug 9 2007, 08:34)  Приведение типов надо понимать не лучше или хуже, а по стандарту. А что, кто-то понимает их по-другому? В ИАР (под АВР) в строках с несколькими мат операциями надо четко приводить операнды к типу результата, иначе компилятор может неожиданный код сгенерить. В кеиле такое требуется, если уж очень запутанная формула считается. По поводу редактора - пользуйтесь любым другим, если родной не нравится. Недостатки у всех ИДЕ имеются, в кейле, например не более 4 точек останова в дебаггере, пока в watch переменную запишешь - мышка повесится, массив указателей на функции надо отдельно линкеру объяснять, и еще можно перечислять. ИМХО ИДЕ должны быть спроектированы так, чтобы при написании несложного проекта мин времени уходило на изучение доки, а если решил плотно работать - пожалуста, изучай, настраивай.... По поводу складирования байтов- по интерфейсам обычно MSB вперед идет, так вот в кейле byte=*((byte*)&word) даст MSB. а в little-endian - LSB. ЗЫ. Я не претендую на категоричность своего мнения, так как не считаю себя абсолютным спецом как в кейле так и в ИАР.
|
|
|
|
|
Aug 12 2007, 09:51
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(ISD @ Aug 11 2007, 22:11)  В ИАР (под АВР) в строках с несколькими мат операциями надо четко приводить операнды к типу результата, иначе компилятор может неожиданный код сгенерить. В кеиле такое требуется, если уж очень запутанная формула считается. Значит в кейле такое тоже случается? И что значит приводить - писать char x = (char)<выражение>? А нельзя ли пример когда он генерит лажу? А то я как-то привык ему верить, может зря?  Цитата(ISD @ Aug 11 2007, 22:11)  По поводу редактора - пользуйтесь любым другим, если родной не нравится. А что, в кейле можно в IDE прикрутить сторонний редактор? Кстати, еще одна бага, которая меня постоянно раздражает в его редакторе - по Ctrl+стрелка он переходит не на слово, а до ближайшего пробела. То есть словом он считает не то, что является словом для компилятора, а набол любых непробельных символов. Цитата(ISD @ Aug 11 2007, 22:11)  Недостатки у всех ИДЕ имеются, в кейле, например не более 4 точек останова в дебаггере, Разве? Может это в триальной версии? Цитата(ISD @ Aug 11 2007, 22:11)  пока в watch переменную запишешь - мышка повесится, Это да... Цитата(ISD @ Aug 11 2007, 22:11)  массив указателей на функции надо отдельно линкеру объяснять Ну, справедлявости ради надо сказать что они и так оверлеят локальные переменные обычных функций, чтобы компилятор догадался откуда будет вызываться функция по указателю, он должен быть ну очень умным.
|
|
|
|
|
Aug 13 2007, 10:53
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320

|
Цитата(777777 @ Aug 12 2007, 12:51)  Значит в кейле такое тоже случается? И что значит приводить - писать char x = (char)<выражение>? А нельзя ли пример когда он генерит лажу? А то я как-то привык ему верить, может зря?  Конкретного примера не приведу - лень копаться в прошлых исходниках, например, word=(word)((lword)((lword)(word1)*(lword)(word2))/word3), если опустить приведение операндов к lword, может неверный результат случиться. На Keil по-моему пройдет, но если 5 операций в строке, то точно свалится. Так что лучше не лениться 2silc - Keil скинул на ящик.
|
|
|
|
Сообщений в этой теме
bychkov_vladimir Компилятор Keil uVision2 для семейств С8051 Jun 22 2007, 13:49 TBI Цитата(bychkov_vladimir @ Jun 22 2007, 17... Jun 22 2007, 14:48 urasinov могу выслать лекарстов для Keil uVision 3 v8.08. Е... Jun 22 2007, 17:30 SALOME Цитата(bychkov_vladimir @ Jun 22 2007, 20... Jun 23 2007, 07:18 tag Цитата(SALOME @ Jun 23 2007, 11:18) С Kei... Jun 25 2007, 10:13 urasinov На форуме встречал ключ к Keil ссылка была на сайт... Jun 24 2007, 19:04 SALOME Цитата(urasinov @ Jun 25 2007, 02:04) ссы... Jun 25 2007, 03:50 -JonnS- По моему мнению лучше скачать с сайта производител... Jul 11 2007, 11:54 kolobok0 Цитата(bychkov_vladimir @ Jun 22 2007, 17... Jul 13 2007, 11:22 Kirill Frolov Цитата(bychkov_vladimir @ Jun 22 2007, 17... Aug 6 2007, 23:15 777777 Цитата(Kirill Frolov @ Aug 7 2007, 03:15)... Aug 7 2007, 13:04 Snaky Цитата(Kirill Frolov @ Aug 7 2007, 05:15)... Aug 8 2007, 02:22 silc что есть ИАР?
IAR http://www.iar.com/
---
У кого ... Aug 10 2007, 14:47 urasinov Цитатапо Ctrl+стрелка он переходит не на слово, а ... Aug 12 2007, 18:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|