Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
int short long 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 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 реда по-надолу или нагоре от реда на който е грешката...

_________________
PIC SPBRG values calculator


Съб Окт 01, 2011 12:19 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Сеп 24, 2005 2:00 pm
Мнения: 787
Мнение Re: int short long
Точно поради факта че различните компилатори третират различно тия декларации, хората са създали и стандартизирали един хедър stdint.h: http://en.wikipedia.org/wiki/Stdint.h
Всеки читав компилатор го има. Най-чисто е да ползваш неговите дефиниции за променливите.


Съб Окт 01, 2011 2:24 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: int short long
... изглежда PIC C18 не е читав компилатор

edit: ще си го направя този файл за да е съвместим кода

_________________
PIC SPBRG values calculator


Съб Окт 01, 2011 12:12 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 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
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: int short long
Мда аз за това питах. Направих си stdint.h и го сложих в глобална директория. "make" файла (така де, проекта) е само за pic18 и директорията в която се намира този файл е към проекта. Ако портвам код ще си вземе stdint.h от съответния компилатор или ако няма такъв пак ще направя (мерси kiiid).

_________________
PIC SPBRG values calculator


Нед Окт 02, 2011 4:37 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: int short long
Казвам ви аз да пишете на Паскал, ама кой да слуша...


Нед Окт 02, 2011 10:27 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: int short long
relsys написа:
Казвам ви аз да пишете на Паскал, ама кой да слуша...

Да пишем на какво? :mrgreen:


Пон Окт 03, 2011 1:07 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 11:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение 
head_up написа:
...
Да пишем на какво? :mrgreen:

Не на какво а на кого, бре!


Пон Окт 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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: int short long
Цецо написа:
Пиковете просто не са мислени за C програмиране


Просто не са истински процесори. :D


Пон Окт 03, 2011 12:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: int short long
Да. Трябва да ги ре-категоризират в графа "полупроцесори" :finga:


Пон Окт 03, 2011 12:35 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Сеп 24, 2005 2:00 pm
Мнения: 787
Мнение Re: int short long
Реконструктор написа:
Цецо написа:
Пиковете просто не са мислени за C програмиране


Просто не са истински процесори. :D


От чисто любопитство да запитам а вие по какво познавате дали някой процесор е мислен за С или не? :D


Пон Окт 03, 2011 2:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение Re: int short long
kiiid написа:
...

От чисто любопитство да запитам а вие по какво познавате дали някой процесор е мислен за С или не? :D


1. Методи за достъп до стека.
2. Размер на стека.
3. Организация на паметта.
4. Процесорна архитектура ( фон Нойман vs Харвард ).
5. ...


Пон Окт 03, 2011 7:54 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: int short long
Цецо написа:
... ама не и за писане на ANSI С компилатор...

А трябва ли и защо?


Пон Окт 03, 2011 9:43 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: int short long
те нали с това се биеха в гърдите микрочип, че 18-ките били оптимизирани за C - може би са имали в предвид extended режима и индиректното индексиране с WREG офсет.
А глупавият им компилатор дори не следи банките - за всяко присвояване прави movlb ... да не говорим че за access RAM-a прави movlb 0 ... за какви оптимизации говорим ....
Аз за това се бъхтех на асемблер, но от известно време се опитвам да ги вържа двете и се получава. Прекъсванията ми са на асемблер и няколко по-дребни функции, а останалото е на C. Малко е досадно да сравняваш на асемблер и да ползваш ROM таблици (масиви) ...

_________________
PIC SPBRG values calculator


Сря Окт 05, 2011 6:59 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни