twgt Постигающий Нет-нет вы не поняли. Меня интересует только С/С++ компилер со своими длл-ями. Линкер юзаю ОВ-овский, имхо он лучше. Асмы мои меня устраивают вполне. Я-ж так понял, тут про cl идется?
Офигительный просто. Я весь день сижу над программой, перепроверяю значения, считаю смещения вручную и в хекс-редакторе, а всё почему, а вот почему: Код (Text): ; 333 : cat=cat+289; add edi, 83521 По какой-то причине он решил что 289 это 83521. Сделал асм-свтавку Код (Text): ; 333 : add cat,289 add DWORD PTR _cat$[esp+16], 289 И всё заработало как часы, вот только день времени потерял. Мда. Оказалось что 83521=289*289, при sizeof(cat)=289 Т.е. чтобы перейти к следуюущей структуре надо указатель на неё увеличить на 1. Раньше не встречал такого.
Незнаю. В "cat=cat+289;" cat-указатель, то бишь поинтер. Обычно делали так typedef struct _foo { char* aaa; int bbb; }foo,*pfoo; .... pfoo f; ... f=f+sizeof(_foo);
twgt ну нифига ж себе тебя глючит) всегда было так, что pointer_to_some_struct+1 тычет на следующий элемент
бывало и у меня такое, при добавлении sizeof к указателю на структуру без приведение ее к виду char* чудесным образом нормально работало )))
В C/C++ операторы +, -, ++, -- при работе с указателями на типизированные структуры изменяют их значения кратно размеру структур. Если работает по другому - компилятор глючит, либо он не понял хитрого приведения типов в коде. im1111 Возможно компилятор распознавал ошибку и корректно все исправлял - вот и чудеса.
_basmp_ размер unsigned зависит от компилятора и целевой платформы. лучше указывать целиком ( например unsigned char ).
Xerx Подловили вы меня. Точно пойнтер на 32-ых == ансигнед инт, а на 64-х ансигнед лонг (или лонг лонг?). twgt Я случайно подумал, а не могли-бы вы вырезать cl 2008 co dll-и и выложить где-нибудь (в сильнозапакованом виде)?
_basmp_ Конечно стоит проверить, но насколько помню на 32х: long == int = 32, long long = 64; на 64х long уже == 64. [offtop] Раз пошла такая пьянка, то может вообще кому нужно скачать туже VC2008 (ну или еще чего нужное коллективу) целиком и выложить где кусками? Мне с безлимиткой не жалко [/offtop]
Xerx есть одна тонкость на 64-х лонг - один 64-й регистр, а лонг лонг - два 32-х. Особо не проверял, тк машину имел мельком. Очень даже да. Да что там - ДА! Только если можно, без графического мусора, МФЦ, СТЛ. отдельно cl с dll-ями. отдельно ml. Отдельно h-и, отдельно lib-ы. Итд. И желательно где нибудь на народе. С довнлоадных сайтов можно ежика родить пока всю их рекламу пересмотришь.
_basmp_ Речь выше шла о числе бит, а не о том где и как они хранятся. Про хранение я и не писал. ну, в общем, качаю "Visual Studio 2008 Express Edition All-in-One DVD" (0.87ГБ). Докачаю, разберемся куда и чего.