| Автор |
Съобщение |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 int short long
Опитвам се да се боря със C за микроконтролери ... чувството е ужасно, но това е друга тема.
Интересува ме какво се използва когато трябва да се дефинира променлива с големина точно два байта. Понеже не съм разглеждал много компилатори за контролери ми се ще отсега да свикна да пиша по-съвместим код. Първото ми налучкване е short. int май може да е различно за различните процесори. Така че: char - а така ... интересно как се интерпретира char в 16 и 32 битовите контролери int - зависи от процесора (чух че за някои компилатори е 1 байт) short - 2 байта за всички компилатори и контролери short long - това май не е толкова универсално, а? long - 4 байта навсякъде
П.П. микрочипското C е боза. има 3 грешки на кръс и през по-вечето време показва syntax error - като BASIC едно време ... при това 3 реда по-надолу или нагоре от реда на който е грешката...
|
| Съб Окт 01, 2011 12:19 am |
|
 |
|
kiiid
Ранг: Почетен член
Регистриран на: Съб Сеп 24, 2005 2:00 pm Мнения: 787
|
 Re: int short long
Точно поради факта че различните компилатори третират различно тия декларации, хората са създали и стандартизирали един хедър stdint.h: http://en.wikipedia.org/wiki/Stdint.h Всеки читав компилатор го има. Най-чисто е да ползваш неговите дефиниции за променливите.
|
| Съб Окт 01, 2011 2:24 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 Re: int short long
... изглежда PIC C18 не е читав компилатор
edit: ще си го направя този файл за да е съвместим кода
|
| Съб Окт 01, 2011 12:12 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: int short long
Чети описанието на конкретния компилатор, че стават грешки ...
Не всеки С-сомпилатор е ANSI С - съвместим. Ядох дебелия със CCS C, когато почнах с PIC24-ките. Той нали е всичко в едно - за 8 и 16-битовите и лесно се бърка при преминаване от 8 към 16-битови контролери. Че int при първите е един байт, а при вторите - 2 е ясно. Проблема ми дойде от това, че 8-битовата версия по дифолт всичко е unsigned, а при 16-битовата - обратно (без char).
|
| Нед Окт 02, 2011 8:51 am |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 Re: int short long
Мда аз за това питах. Направих си stdint.h и го сложих в глобална директория. "make" файла (така де, проекта) е само за pic18 и директорията в която се намира този файл е към проекта. Ако портвам код ще си вземе stdint.h от съответния компилатор или ако няма такъв пак ще направя (мерси kiiid).
|
| Нед Окт 02, 2011 4:37 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
 Re: int short long
Казвам ви аз да пишете на Паскал, ама кой да слуша...
|
| Нед Окт 02, 2011 10:27 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
 Re: int short long
Да пишем на какво? 
|
| Пон Окт 03, 2011 1:07 am |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 11:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Не на какво а на кого, бре!
|
| Пон Окт 03, 2011 1:34 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
 Re: int short long
Пиковете просто не са мислени за C програмиране, затова и компилаторите за тях са извратени. Колкото и да са нови и лъскави, всичките носят в себе си онова ядро на 16C54 с всичките му щурави концепции вътре. Прекрасни са за много неща, ама не и за писане на ANSI С компилатор. Чак MIPS-овия е нещо по различно.
Та ако искаш да учиш C за микроконтролери - зарежи малките пикове - взимаш или MIPS или АРМ.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Окт 03, 2011 10:15 am |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: int short long
Просто не са истински процесори. 
|
| Пон Окт 03, 2011 12:07 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: int short long
Да. Трябва да ги ре-категоризират в графа "полупроцесори" 
|
| Пон Окт 03, 2011 12:35 pm |
|
 |
|
kiiid
Ранг: Почетен член
Регистриран на: Съб Сеп 24, 2005 2:00 pm Мнения: 787
|
 Re: int short long
От чисто любопитство да запитам а вие по какво познавате дали някой процесор е мислен за С или не? 
|
| Пон Окт 03, 2011 2:13 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: int short long
1. Методи за достъп до стека. 2. Размер на стека. 3. Организация на паметта. 4. Процесорна архитектура ( фон Нойман vs Харвард ). 5. ...
|
| Пон Окт 03, 2011 7:54 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: int short long
|
| Пон Окт 03, 2011 9:43 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 Re: int short long
те нали с това се биеха в гърдите микрочип, че 18-ките били оптимизирани за C - може би са имали в предвид extended режима и индиректното индексиране с WREG офсет. А глупавият им компилатор дори не следи банките - за всяко присвояване прави movlb ... да не говорим че за access RAM-a прави movlb 0 ... за какви оптимизации говорим .... Аз за това се бъхтех на асемблер, но от известно време се опитвам да ги вържа двете и се получава. Прекъсванията ми са на асемблер и няколко по-дребни функции, а останалото е на C. Малко е досадно да сравняваш на асемблер и да ползваш ROM таблици (масиви) ...
|
| Сря Окт 05, 2011 6:59 pm |
|
|