vak: (Default)
[personal profile] vak
Загадка: на каком из процессоров sizeof(int) == sizeof(char)?
Вполне современная архитектура, массово выпускается одной из известных западных фирм.

Re: :)

Date: 2009-03-12 16:53 (UTC)
From: [identity profile] spamsink.livejournal.com
16 - это правильно. На процессорах с 16 бит/байт юникод поддержать - как два байта переслать. Базовая страница - 1 байт, все остальное - 2 байта. Красота!

Re: :)

Date: 2009-03-12 18:43 (UTC)
From: [identity profile] dvv.livejournal.com
Полный Unicode — 32 бита. К примеру, в нормальных браузерах после двоеточия должен быть глиф из репертуара, который в 16 бит в натуральном виде не лезет: 𝄢

Re: :)

Date: 2009-03-12 18:55 (UTC)
From: [identity profile] spamsink.livejournal.com
Ну да, ну и что (http://www.unicode.org/glossary/#surrogate_code_point)?

Re: :)

Date: 2009-03-12 19:03 (UTC)
From: [identity profile] dvv.livejournal.com
С таким подходом и UTF-8 хватает. Восьмибитного.

Re: :)

Date: 2009-03-12 19:30 (UTC)
From: [identity profile] spamsink.livejournal.com
До двух считать проще, чем до 4. А верхние страницы я бы вообще отменил, чтобы всякое говно (http://www.unicode.org/%7Escherer/emoji4unicode/snapshot/utc.html#e-4F4) в стандарт не попадало.

Re: :)

Date: 2009-03-12 20:27 (UTC)
From: [identity profile] dvv.livejournal.com
До одного считать ещё проще. Особенно если в этот один байт уписывать только чистый ASCII, без всякого говна. По–хорошему вообще нужно телеграфным кодом ограничиться. Типа разрядов на 6 максимум.

Re: :)

Date: 2009-03-12 18:57 (UTC)
From: [identity profile] spamsink.livejournal.com
Кстати, http://www.fileformat.info/info/unicode/char/1d122/index.htm

Зачем мне MUSICAL SYMBOL F CLEF?

Re: :)

Date: 2009-03-12 19:04 (UTC)
From: [identity profile] dvv.livejournal.com
С таким подходом и KOI8-R хватает. Восьмибитного.

Re: Так может, это фишка?

Date: 2009-03-12 20:21 (UTC)
From: [identity profile] dvv.livejournal.com
В смысле? Насколько я помню (ох, давно это было), в gcc нету „пооктетной” адресации. Есть char, и есть универсальный пойнтер гранулярности char.

Date: 2009-03-13 13:52 (UTC)
From: [identity profile] dvv.livejournal.com
Таки заставил меня залезть в тексты :-) Ну так там ничего не мешает сделать BITS_PER_UNIT 16 (или 32). Будет такой вот толстый байт.

Date: 2009-03-13 14:26 (UTC)
From: [identity profile] dvv.livejournal.com
Естественно. В GCC ничего не делается „простой заменой одного макроса” :-)

Re: Хреново

Date: 2009-03-13 13:57 (UTC)
From: [identity profile] dvv.livejournal.com
А разве POSIX где–то оперирует термином „октет”?

Date: 2009-03-13 14:14 (UTC)
From: [identity profile] dvv.livejournal.com
Ну а какие проблемы? Один октет прекрасно влезает в один широкий байт. Какие проблемы с нечётным количеством широких байтов?

Date: 2009-03-13 14:32 (UTC)
From: [identity profile] dvv.livejournal.com
Так мы о read() или о COM—портах? Если первое, то естественно, read() должен читать полные (широкие!) байты, а если второе, это дело драйвера утрясать представление данных между устройством и всей остальной системой.

Date: 2009-03-13 16:32 (UTC)
From: [identity profile] dvv.livejournal.com
Нету в POSIXе двух режимов :-)

Re: Хреново

Date: 2009-03-13 15:24 (UTC)
From: [identity profile] spamsink.livejournal.com
Не вижу проблемы. read/write могут читать-писать по одному октету на байт (write - возвращать ошибку, если в записываемом байте попался не октет), а для упакованного чтения-записи могут быть отдельные системные вызовы.

Date: 2009-03-13 16:23 (UTC)
From: [identity profile] spamsink.livejournal.com
Ну хорошо, не отдельные, а переключать режимы с помощью ioctl. По умолчанию работают только четные количества октетов (вот такой block device с блоком в 2 байта), а если очень хочется, то можно переключить в распакованный режим.

Date: 2009-03-13 16:40 (UTC)
From: [identity profile] dvv.livejournal.com
Это ещё зачем? Ты ж не заводишь отдельные системные вызовы для, скажем, устройства, у которого регистры выдают по 2 бита?