Armen 0 2 марта, 2005 Опубликовано 2 марта, 2005 · Жалоба Privet. U kogo nibud' est opit raboti s compilyatorom Metroverks dlya StarCore ? U menya problemi so structurami. U nix nepriyatnaya privichka kakaya bi ni bila struktura i ee soderjimoe ee address vsegda align to 4 da i razmer toje kraten 4? primer: struct { char a; }v; sizeof v - 4 byta da i address lyuboy peremennoy tima v vsegda align to 4! Kak mojno reshit etu problemu? S compilyatorom ot GreenHeel dlya StarCore vse ok proboval. razmer 1 a adress kak poluchitsya (ne obyazatelno kraten 4). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 2 марта, 2005 Опубликовано 2 марта, 2005 · Жалоба А чего нибудь типа #pragma pack() в хелпе не описано? Попробуйте так: #pragma pack( 1 ) typedef struct { float q0; int q1; double q2; char oa; } sss; #pragma pack() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Armen 0 2 марта, 2005 Опубликовано 2 марта, 2005 · Жалоба est pragma "align" no tolko 4 i 8 :))) kak nazlo po dokam v principe etogo vsego ne doljno bit i vse doljno rabotat normalno... no tut dokumenti i chto na samom dele.. rasxodyatsya Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
angir 0 2 марта, 2005 Опубликовано 2 марта, 2005 · Жалоба est pragma "align" no tolko 4 i 8 :))) kak nazlo po dokam v principe etogo vsego ne doljno bit i vse doljno rabotat normalno... no tut dokumenti i chto na samom dele.. rasxodyatsya <{POST_SNAPBACK}> То, что адрес переменной align 4 - так и должно быть с 32-битными переменными. С 16-битными - получится сделать align 2, с 8-битными - align 1. С 64-битными - align 8 будет. И, соответственно, кратен 4 размер всех структур - они-же 32-битные. По другому, ни как, вернее как, но вручную, на ассемблере + еще собирать по кусочкам 32-битные переменные. Т.е. иначе скорости у вас не выйдет. А какие проблемы у вас с этим? В память не помещаетесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Armen 0 3 марта, 2005 Опубликовано 3 марта, 2005 · Жалоба est pragma "align" no tolko 4 i 8 :))) kak nazlo po dokam v principe etogo vsego ne doljno bit i vse doljno rabotat normalno... no tut dokumenti i chto na samom dele.. rasxodyatsya <{POST_SNAPBACK}> То, что адрес переменной align 4 - так и должно быть с 32-битными переменными. С 16-битными - получится сделать align 2, с 8-битными - align 1. С 64-битными - align 8 будет. И, соответственно, кратен 4 размер всех структур - они-же 32-битные. По другому, ни как, вернее как, но вручную, на ассемблере + еще собирать по кусочкам 32-битные переменные. Т.е. иначе скорости у вас не выйдет. А какие проблемы у вас с этим? В память не помещаетесь? <{POST_SNAPBACK}> Da no u menya kak raz ne 32 bitnie peremennie, struktura soderjit pole razmerom v odin byte: struct { char a; } z; compilyator pri kompilyacii delaet razmer structuri z 4 byte i align to 4, xotya tam maksimalniy fundamentalniy tip 8 bit. no na drugix kompilyatorax vse ok skajem ot Green Hills. Zadacha takaya, ot chipa 91c111 prixodit ethernet paket kotoriy postupayet v TCP/IP stek, stek gotov... no iz za togo chto compiler delaet vse strukturi align to 4 i razmer vsex struktur kraten 4 proisxodit smeshenie poley vsex struktur... menyat realizaciyu ne ochen pravilno... ili ya chto to nedoglyadel v opciyax compilera ili je compiler ne verno rabotaet i ne sootvetstvuet ego je documentacii. <_< Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Armen 0 4 марта, 2005 Опубликовано 4 марта, 2005 · Жалоба Reshenie naydeno, nedokumentirovannaya opciya kompilyatora. Esli komu nibud ponadobitsya obrashaytes. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться