Отговори на тема  [ 20 мнения ]  Отиди на страница Предишна  1, 2
Каква е тая тъпотия?? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: Каква е тая тъпотия??
От бърз поглед на мипса виждам, че има load/store align stage на конвейра, което ще рече че спокойно може да се справя с неподравнен достъп. Така че виж как се разрешава и карай както си свикнал...


Пон Юли 28, 2014 4:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: Каква е тая тъпотия??
Н'бабане Гт'муан'га написа:
Стилът на писане зависи от безброй фактори, един от които е естеството на проблема. Аз лично не бих скочил с двата крака в прибързани заключения...


Аз нямам претенции за добър програмист, мисля го подчертах :) Тъй че не го приемай като злостна критика.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Юли 28, 2014 5:14 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Каква е тая тъпотия??
Един от начините - дефинираш си union по тоя начин:
Код:
union test {
  int i;
  unsigned int ui;
  char c;
} __attribute__ ((packed));


Това кара компилатора да използва за достъп команди за неподравнените адреси (MIPS-а си ги има).

После можеш да се обръщаш към каквото те интересува:
Код:
int a;
unsigned int ua;
char ca;
test * p;

a=p->i;
ua=p->ui;
ca=p->c;


В "p" адреса вече може да е всякакъв. Още повече, в тоя union можеш да си дефинираш променливи от всякакъв тип, което често е удобство - поинтера става универсален, към неподравнени променливи каквито ти душа иска. Май можеше дори неподравнен поинтер към подравнен struct, но в последното не съм 100% сигурен. Само веднъж съм се борил с такова, и то отдавна. Виж __attribute__ ((packed)) го ползвам често за struct, за да не оставя дупки в него.

memcpy винаги работи, ама е няколко пъти по-бавно.

Виж в ръководството за тоя компилатор. Търси "packed" - има и други варианти. Кашата е пълна, защото за съвместимост се поддържат и стари неща, после се появяват нови, добавят и махат долни подчертавки и прочие полюции. По тоя повод, новата им система за PIC32 още не смея да я пробвам дори. :)


Вто Юли 29, 2014 12:31 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 9:14 am
Мнения: 5298
Мнение Re: Каква е тая тъпотия??
Цецо, тук няма добри програмисти. Всички се учим по един или друг начин от предишните си грешки и от грешките на другите :)


sparkybg написа:
Един от начините - дефинираш си union по тоя начин:
.....


Така го бях направил в най-първата версия преди няколко месеца, обаче това докара проблеми от друго естество вътре в масива (дълга тема), и в крайна сметка реших да унифицирам масива до най-малкото кратно, а когато ми се налага достъп до друг тип данни в него, просто да си ги правя сам във формата, който ми е нужен за момента.

_________________
'просто' е технически синоним на 'красиво'


Вто Юли 29, 2014 3:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Каква е тая тъпотия??
Н'бабане Гт'муан'га написа:
Цецо, тук няма добри програмисти.

Имааа, имаааа ... :weedman:

_________________
Мразя да мразя ...


Вто Юли 29, 2014 11:01 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

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


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

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