vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2009-03-12 04:26 pm

Необычный процессор

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

Re: :)

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

Re: :)

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

Re: :)

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

Re: :)

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

Re: :)

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

Re: :)

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

Re: :)

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

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

Re: :)

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

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

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

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

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

Re: Хреново

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

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

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

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

Re: Хреново

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

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

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