最近はもう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の差がある)。