32bit時代を知ってる奴はおっさん確定、という時代

最近はもう32bitが昔の8bitみたいな扱いになってますよね。8-16色パレットのドット絵、PSG音源、スプライト、バンク切り替え…そっから16bitの時代になると多重スクロールだのFM音源だの256色だのディザリングだのフルカラーだの漢字ROMだのセグメントレジスタだの…おっさんホイホイですな。

32bitの人はどう昔話するんだろう。あの頃はPAEで無理やり4GB越えメモリを使ってたんだよ、でも1プロセス内では使えなくてね、とか? PCI ExpressがなくてPCIだったんだよね。IntelがInfiniBandから撤退して、IBからノード間通信を省いたものを作る、名前はPCI Express、どうだー、みたいな発表をしてみんな唖然としてね。私その発表を聞きに行ってましたよ。Intel Developer Forum、そのときもらったマグネットのgive awayが最近まで冷蔵庫に貼ってありました…

つまり今となってはポインタが64ビットじゃないなんて、むしろ新鮮なんだよ。レトロ。昭和な感じってやつ。あーでもAndroidとかの多くは今でもまだ32ビットのシステムか。

というわけでRaspberry Pi 2 Bを買って遊んではいるんですが、32bitってtime_tも32ビットなのよね。sizeof(struct timeval)=8とか…忍殺じゃないけどこれ2038年早々に爆発を起こすやつじゃんか。

pi@raspberrypi:~ $ date -d @2147483648
date: invalid date ‘@2147483648’
pi@raspberrypi:~ $ date -d @2147483647
Tue 19 Jan 12:14:07 JST 2038

こんなんだもんなぁ。

そしてlong doubleはdoubleが同じで8バイト。まあ私は浮動小数点を使うことはあまりないけどね。

自分はCentOS7とかFedoraのほうが慣れているんだけど、世間的にはDebian/Ubuntuのほうが使われているのかな。Raspbianにも使われているDebianのjessieってやつは割と最近のものみたいで、dockerの公式イメージのベースとしてもよく使われている。jessie自体はあのカウガールね。そんな名前だったか。

それにしてもaptはどうしても慣れない…自動更新の設定はどうにかやった。デフォルトエディタがviじゃないのも今さらながら違和感。

Raspberry Piは4コアあったりGPUがあったりして、小さいは小さいんだけど、いまどきのコンピュータでもある。Ethernetは中ではUSBのアダプタという扱いなのか。

pi@raspberrypi:~ $ sudo ethtool -i eth0
driver: smsc95xx
version: 22-Aug-2005
firmware-version: smsc95xx USB 2.0 Ethernet
bus-info: usb-3f980000.usb-1.1
supports-statistics: no
supports-test: no
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
pi@raspberrypi:~ $ sudo lsusb
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

MacやLinux(x64)の場合はtime_tは当然8バイトで、2,147,485,547年くらいまで行ける。

[watanabe]# LANG=C gdate -d @67768036191644399
Wed Dec 31 23:59:59 JST 2147485547
[watanabe]# LANG=C gdate -d @67768036191644400
gdate: time '67768036191644400' is out of range

しかしこの67768036191644399(0xf0c2ab7c542aef)ていうマジックナンバーは何なんだぜ? 64ビットの上限はもっと先だぜ? yearのところの数字はちょっと32ビットのsigned intの上限に似ていて、ただ似ているだけで上限そのものではない(1899の差がある)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です