Как протестировать .Net программу с big-endian?
От: 0K Ниоткуда  
Дата: 26.11.10 18:16
Оценка:
Физического процессора, который бы использовал big-endian нет, а нужно протестировать приложение на корректность работы с big-endian. Что делать? Есть ли какой-нибудь эмулятор?
Re: Как протестировать .Net программу с big-endian?
От: hardcase Пират http://nemerle.org
Дата: 26.11.10 19:16
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Физического процессора, который бы использовал big-endian нет, а нужно протестировать приложение на корректность работы с big-endian. Что делать? Есть ли какой-нибудь эмулятор?


Зачем, проверить работу этого процессора?
Уже вроде отмечалось, что на самой машины порядок байт значения не имеет.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Как протестировать .Net программу с big-endian?
От: 0K Ниоткуда  
Дата: 26.11.10 20:37
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Зачем, проверить работу этого процессора?

H>Уже вроде отмечалось, что на самой машины порядок байт значения не имеет.

Есть стандарт, в котором должны быть представлены данные. И программа пока работает по этому стандарту (в т.ч. сохраняет значения в файл). Что будет если запустить на другом процессоре -- не знаю.

BitConverter я заменил. А вот Buffer.BlockCopy не знаю заменять или нет? Вроде нужно заменять, т.к. скажем, после копирования массива Int32 в массив Byte вместо 1234 5678 получим 4321 8765? А может и нет. Нужно проверить в общем.
Re[3]: Как протестировать .Net программу с big-endian?
От: hardcase Пират http://nemerle.org
Дата: 26.11.10 20:45
Оценка:
Здравствуйте, 0K, Вы писали:

0K>BitConverter я заменил. А вот Buffer.BlockCopy не знаю заменять или нет?


BlockCopy банально копирует участок памяти (массив). Каким был один участок — таким будет другой.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Как протестировать .Net программу с big-endian?
От: hardcase Пират http://nemerle.org
Дата: 26.11.10 20:50
Оценка:
Здравствуйте, 0K, Вы писали:

0K>BitConverter я заменил. А вот Buffer.BlockCopy не знаю заменять или нет? Вроде нужно заменять, т.к. скажем, после копирования массива Int32 в массив Byte вместо 1234 5678 получим 4321 8765? А может и нет. Нужно проверить в общем.


Порядок байт в памяти начинает иметь значение лишь когда происходит доступ к памяти с нарушением типизации (аналогично reinterpret_cast<> из C++).
Очевидно что копирование int[] в byte[] — это нарушение типизации и потому нужно принимать во внимание порядок байт.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Как протестировать .Net программу с big-endian?
От: 0K Ниоткуда  
Дата: 26.11.10 21:05
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Порядок байт в памяти начинает иметь значение лишь когда происходит доступ к памяти с нарушением типизации (аналогично reinterpret_cast<> из C++).

H>Очевидно что копирование int[] в byte[] — это нарушение типизации и потому нужно принимать во внимание порядок байт.

Ну все равно для уверенности нужно проверить. Неужели нет никакого способа?
Re: Как протестировать .Net программу с big-endian?
От: Ocelot  
Дата: 26.11.10 21:12
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Физического процессора, который бы использовал big-endian нет, а нужно протестировать приложение на корректность работы с big-endian. Что делать? Есть ли какой-нибудь эмулятор?


Уффф... Ну разве что эмулятор PDA/смартфона какого-нибудь с ARM под линухами. Можно посмотреть, скажем, те, что с Андроидом идут. И ставить туда придется Mono. Хотя, кстати, может, .NET Micro тоже умеет.
Ну или эмулятор Xbox (наверняка в Xbox SDK включен) — вроде, есть и для него какой-то шибко урезанный фреймворк.
Больше ничего более-менее доступного в голову не приходит
Re[4]: Как протестировать .Net программу с big-endian?
От: Pavel Dvorkin Россия  
Дата: 27.11.10 07:34
Оценка: +1
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, 0K, Вы писали:


0K>>BitConverter я заменил. А вот Buffer.BlockCopy не знаю заменять или нет?


H>BlockCopy банально копирует участок памяти (массив). Каким был один участок — таким будет другой.


Копирует-то она копирует, да только вот можно не то или не туда скопировать. Думали, что копировали младший байт куда-то, а оказалось — старший.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.