- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
#include <stdio.h>
#define BIG_ENDIAN 0
#define LITTLE_ENDIAN 1
int TestByteOrder() {
short int word = 0x0001;
char *b = (char *)&word;
return (b[0] ? LITTLE_ENDIAN : BIG_ENDIAN);
}
int main() {
int r = TestByteOrder();
printf("%s\n", r == LITTLE_ENDIAN ? "Little Endian" : "Big Endian");
return r;
}
Игрушечная программа, проверяет порядковость байтов процессора ("endianness"); хотя изначально понятно что WinNT всегда "от младшего к старшему".
Она безупречно правильная, но меня не устраивает ее размер. Ведь всё можно было бы уместить в две строки. (А еще лучше перевести на АСМ). Прошу знатоков поупражняться.
guest8 06.10.2019 11:34 # −999
gost 06.10.2019 11:47 # 0
http://ideone.com/doXV49
Код не мой, я просто разместил объяву минифицировал.
guest8 06.10.2019 12:28 # −999
guest8 06.10.2019 13:11 # −999
ropuJIJIa 06.10.2019 15:25 # 0
ropuJIJIa 06.10.2019 16:39 # 0
gpyrou_nemyx 06.10.2019 16:53 # 0
gpyrou_nemyx 06.10.2019 17:12 # −1
guest8 06.10.2019 17:18 # −999
gost 06.10.2019 17:24 # −1
guest8 06.10.2019 17:27 # −999
ropuJIJIa 06.10.2019 17:39 # 0
guest8 06.10.2019 17:47 # −999
ropuJIJIa 06.10.2019 18:00 # −1
Такой же неявный каст в выражениях pituh || kurochka, pituh && kurochka.
guest8 06.10.2019 20:12 # −999
ropuJIJIa 06.10.2019 20:41 # −1
guest8 06.10.2019 20:47 # −999
ropuJIJIa 06.10.2019 20:57 # −1
Бинарный оператор & — побитовое «И».
При беглом взгляде действительно можно спутать, что означает &i, если не заметить, что слева не число, а оператор приведения типа.
Напридумывают одинаковых значков...
MAPTbIwKA 06.10.2019 22:58 # +101
gpyrou_nemyx 06.10.2019 23:30 # −1
MAPTbIwKA 06.10.2019 23:32 # +101
gpyrou_nemyx 06.10.2019 16:51 # −1
ropuJIJIa 06.10.2019 15:14 # −1
А давайте проверим это утверждение. Новые версии существуют под Intel x86 и под ARM (Windows RT). Старые версии ещё были под MIPS, PowerPC, DEC Alpha AXP, Intel Itanium.
Процессоры MIPS, PowerPC, Alpha, Itanium, ARM могли работать в обоих режимах.
«OS/2 and Windows NT for PowerPC ran the processor in little-endian mode while Solaris, AIX and Linux ran in big endian». Хотя был и порт «Дебиана» для режима little-endian.
В Power PC 970, известном как G5, режим little-endian не реализовали.
Итак, Windows NT реализовали для процессоров, которые либо little-endian (x86), а также для процессоров, которые умеют работать в обоих режимах (у ARM ещё бывают смешанные режимы). Есть подозрение, что компания Microsoft для упрощения разработки на всех платформах использовала один и тот же порядок байтов.
Возможно, Вы правы, хотя официального подтверждения я не нашёл.
Кстати, исходник не привязан к Windows NT, его можно скомпилировать и под другие операционные системы.
guest8 06.10.2019 15:19 # −999
ropuJIJIa 06.10.2019 15:33 # −1
Пользуюсь мобильными устройствами на ARM под управлением разных систем.
Пользуюсь устройствами на x86 под управлением Windows NT и иногда Linux.
Я не знаю, приходилось ли сталкиваться с чем-то ещё, потому что не знаю, из чего сделаны другие электронные устройства.
gpyrou_nemyx 06.10.2019 16:13 # −1
Под PDP-11 будет неправильно работать.
ropuJIJIa 06.10.2019 16:33 # −1
ropuJIJIa 06.10.2019 16:44 # −1
gpyrou_nemyx 06.10.2019 18:15 # 0
gpyrou_nemyx 06.10.2019 18:21 # −1
Именно поэтому я за "GCC". то гцц ругается а шлагнг молчит, хотя -Стена и -педантичные-ошибки.
ropuJIJIa 06.10.2019 18:27 # −1
MAPTbIwKA 06.10.2019 23:23 # +101
мартышка так проверяет
gpyrou_nemyx 06.10.2019 23:31 # 0
j123123 07.10.2019 13:00 # −1
MEXAHu4ECKuu_nemyx 07.10.2019 13:32 # −103
AHCKujlbHblu_netyx 07.10.2019 13:32 # −1
nemywok_Ha_naJlO4KE 07.10.2019 13:33 # −103
MEXAHu4ECKuu_nemyx 07.10.2019 13:35 # −103
KOHCOjlbHblu_nemyx 07.10.2019 13:36 # −103
MEXAHu4ECKuu_nemyx 07.10.2019 13:37 # −103
cmepmop 07.10.2019 14:45 # −102