| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| int short long http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9388 |
Страница 1 от 2 |
| Автор: | npelov [ Съб Окт 01, 2011 12:19 am ] |
| Заглавие: | int short long |
Опитвам се да се боря със C за микроконтролери ... чувството е ужасно, но това е друга тема. Интересува ме какво се използва когато трябва да се дефинира променлива с големина точно два байта. Понеже не съм разглеждал много компилатори за контролери ми се ще отсега да свикна да пиша по-съвместим код. Първото ми налучкване е short. int май може да е различно за различните процесори. Така че: char - а така ... интересно как се интерпретира char в 16 и 32 битовите контролери int - зависи от процесора (чух че за някои компилатори е 1 байт) short - 2 байта за всички компилатори и контролери short long - това май не е толкова универсално, а? long - 4 байта навсякъде П.П. микрочипското C е боза. има 3 грешки на кръс и през по-вечето време показва syntax error - като BASIC едно време ... при това 3 реда по-надолу или нагоре от реда на който е грешката... |
|
| Автор: | kiiid [ Съб Окт 01, 2011 2:24 am ] |
| Заглавие: | Re: int short long |
Точно поради факта че различните компилатори третират различно тия декларации, хората са създали и стандартизирали един хедър stdint.h: http://en.wikipedia.org/wiki/Stdint.h Всеки читав компилатор го има. Най-чисто е да ползваш неговите дефиниции за променливите. |
|
| Автор: | npelov [ Съб Окт 01, 2011 12:12 pm ] |
| Заглавие: | Re: int short long |
... изглежда PIC C18 не е читав компилатор edit: ще си го направя този файл за да е съвместим кода |
|
| Автор: | Desert Leo [ Нед Окт 02, 2011 8:51 am ] |
| Заглавие: | Re: int short long |
Чети описанието на конкретния компилатор, че стават грешки ... Не всеки С-сомпилатор е ANSI С - съвместим. Ядох дебелия със CCS C, когато почнах с PIC24-ките. Той нали е всичко в едно - за 8 и 16-битовите и лесно се бърка при преминаване от 8 към 16-битови контролери. Че int при първите е един байт, а при вторите - 2 е ясно. Проблема ми дойде от това, че 8-битовата версия по дифолт всичко е unsigned, а при 16-битовата - обратно (без char). |
|
| Автор: | npelov [ Нед Окт 02, 2011 4:37 pm ] |
| Заглавие: | Re: int short long |
Мда аз за това питах. Направих си stdint.h и го сложих в глобална директория. "make" файла (така де, проекта) е само за pic18 и директорията в която се намира този файл е към проекта. Ако портвам код ще си вземе stdint.h от съответния компилатор или ако няма такъв пак ще направя (мерси kiiid). |
|
| Автор: | relsys [ Нед Окт 02, 2011 10:27 pm ] |
| Заглавие: | Re: int short long |
Казвам ви аз да пишете на Паскал, ама кой да слуша... |
|
| Автор: | head_up [ Пон Окт 03, 2011 1:07 am ] | |||||||||
| Заглавие: | Re: int short long | |||||||||
Да пишем на какво? |
||||||||||
| Автор: | bongo_x2 [ Пон Окт 03, 2011 1:34 am ] | |||||||||
| Заглавие: | ||||||||||
Не на какво а на кого, бре! |
||||||||||
| Автор: | Цецо [ Пон Окт 03, 2011 10:15 am ] |
| Заглавие: | Re: int short long |
Пиковете просто не са мислени за C програмиране, затова и компилаторите за тях са извратени. Колкото и да са нови и лъскави, всичките носят в себе си онова ядро на 16C54 с всичките му щурави концепции вътре. Прекрасни са за много неща, ама не и за писане на ANSI С компилатор. Чак MIPS-овия е нещо по различно. Та ако искаш да учиш C за микроконтролери - зарежи малките пикове - взимаш или MIPS или АРМ. |
|
| Автор: | Реконструктор [ Пон Окт 03, 2011 12:07 pm ] | |||||||||
| Заглавие: | Re: int short long | |||||||||
Просто не са истински процесори. |
||||||||||
| Автор: | Cekins [ Пон Окт 03, 2011 12:35 pm ] |
| Заглавие: | Re: int short long |
Да. Трябва да ги ре-категоризират в графа "полупроцесори" |
|
| Автор: | kiiid [ Пон Окт 03, 2011 2:13 pm ] | ||||||||||||||||||
| Заглавие: | Re: int short long | ||||||||||||||||||
От чисто любопитство да запитам а вие по какво познавате дали някой процесор е мислен за С или не? |
|||||||||||||||||||
| Автор: | bateAz [ Пон Окт 03, 2011 7:54 pm ] | |||||||||
| Заглавие: | Re: int short long | |||||||||
1. Методи за достъп до стека. 2. Размер на стека. 3. Организация на паметта. 4. Процесорна архитектура ( фон Нойман vs Харвард ). 5. ... |
||||||||||
| Автор: | Desert Leo [ Пон Окт 03, 2011 9:43 pm ] | |||||||||
| Заглавие: | Re: int short long | |||||||||
А трябва ли и защо? |
||||||||||
| Автор: | npelov [ Сря Окт 05, 2011 6:59 pm ] |
| Заглавие: | Re: int short long |
те нали с това се биеха в гърдите микрочип, че 18-ките били оптимизирани за C - може би са имали в предвид extended режима и индиректното индексиране с WREG офсет. А глупавият им компилатор дори не следи банките - за всяко присвояване прави movlb ... да не говорим че за access RAM-a прави movlb 0 ... за какви оптимизации говорим .... Аз за това се бъхтех на асемблер, но от известно време се опитвам да ги вържа двете и се получава. Прекъсванията ми са на асемблер и няколко по-дребни функции, а останалото е на C. Малко е досадно да сравняваш на асемблер и да ползваш ROM таблици (масиви) ... |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|