目次: 車
車を買い替えることにしました。来週のどこかでレガシィさんとはお別れとなります。新車登録が2005年、私が購入したのが2010年で、20年近く頑張ってくれて感謝しかありません。レガシィB4、とても良い車です。ありがとうスバルさん。
私が乗っているグレードは2.0 GTで、2L水平対向4気筒ターボ、260psを発揮します。3000rpmくらいから後ろから押されるような力強い加速をするのが印象的です。たぶん私はこの車の本気の力を使ってないですが、それでも合流、上り坂、追い抜きで苦労した記憶はありません。ハンドルが重めになっていて、足回りはセダンにしてはやや固めです、それが良いところでもありますね。
購入当時はターボ車が減りつつありターボ車はいずれ滅びると思いましたが、2010年くらいからダウンサイジングターボが大流行して今はNA車と半々くらいの勢いになっています。世の中は何が起きるかわからないものです。
無茶な運転はしてませんが、10年間一度もぶつけなかった壁に最後の日(大阪から東京に引っ越し移動の日)に限ってぶつけたり、リアバンパーもぶつけて取れてしまったり、だいぶベコベコになりました。次こそぶつけないように気を付けます……けど、いつかぶつけるんだろうな〜。
大阪は走ってもあまり面白くないのと、車に乗る用事もほぼありませんでした。東京もコロナ、リモートワーク、駐車場が結構遠いなどなど、ほとんど車に乗りませんでした。乗らなさすぎてバッテリーが何度も上がりましたし、もう車は要らないかなあ?とすら思いました。
駐車場に空きが出て近いところに止められるようになり、転職してから東京の会社には珍しく車通勤できるので車に頻繁に乗るようになりました。必要があれば乗るんだなと自分でも驚きました……。
この記事にコメントする
目次: ベンチマーク
以前(2025年2月7日の日記参照)100万回のHello, World!を104バイトまで削りました。あれはなかなか楽しかったです。
バイナリを使わずにどこまで削れるか?は一部やっている(2024年2月25日の日記参照)のですが、スタート地点が謎のバイナリ埋め込みしたコードだったので、もうちょっとC言語寄りのコードでやってみました。100万回のHello, World!ではなく、1回だけのHello, World!にします。
一般的なprintfを使ったコードでやってみます。
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello, World!\n");
return 0;
}
スタティックリンクします。
$ gcc -static -Os b.c $ strip -s a.out $ ./a.out Hello, World! $ ls -la -rwxr-xr-x 1 katsuhiro 1003 676288 Jul 20 2025 a.out
676KBでした。思っていたよりサイズがでかいです。libcがいるのである程度のサイズになるのは仕方ないでしょう。この方向でサイズを削るのもやってみたいですけど、libcを変えてみるくらいしか思いつきません。
サイズ肥大の要因libcにさようならをするため、writeシステムコールとexitシステムコールを直接叩くコードに変えます。黒魔術感がマシマシで、C言語の範疇といえるか微妙なラインです。
#define SYS_write 1
#define SYS_exit 60
#define fd_stdout 1
const char str[] __attribute__((section(".text"))) = "Hello, World!\n";
static void syscall(long n, long a1, long a2, long a3)
{
__asm__ volatile (
"mov %0, %%rax\n\t"
"mov %1, %%rdi\n\t"
"mov %2, %%rsi\n\t"
"mov %3, %%rdx\n\t"
"syscall\n\t"
: : "r"(n), "r"(a1), "r"(a2), "r"(a3) : "rax", "rdi", "rsi", "rdx"
);
}
void _start()
{
syscall(SYS_write, fd_stdout, (long)str, sizeof(str) - 1);
syscall(SYS_exit, 0, 0, 0);
}
特に工夫せずにビルド+stripすると8752バイト(約8KB)となります。
$ gcc -static -nostdlib a.c /tmp/cchcRI2o.s: Assembler messages: /tmp/cchcRI2o.s:4: Warning: ignoring changed section attributes for .text $ strip -s a.out $ ./a.out Hello, World! $ ls -l a.out -rwxr-xr-x 1 katsuhiro 1003 8752 Jul 20 2025 a.out
あとは前回調べた工夫を全部使います。以前は使っていなかった-fno-asynchronous-unwind-tablesは.eh_frameセクションを削るためのものです。
$ gcc -static -nostdlib \ -Wl,-Ttext=0x400100 \ -fno-asynchronous-unwind-tables \ -Wl,--build-id=none \ -fno-ident \ -Os \ a.c /tmp/ccKkgbPV.s: Assembler messages: /tmp/ccKkgbPV.s:34: Warning: ignoring changed section attributes for .text $ strip -s a.out $ ./a.out Hello, World! $ ls -l a.out -rwxr-xr-x 1 katsuhiro 1003 536 Jul 20 2025 a.out
だいぶ減って536バイト、バイナリを一切触らずサイズを削れました。これより短くする場合は、コードを短くする(write = systemcall3, exit = systemcall0に分けてmov命令を削るなど)、セクションをさらに削る方法を探すくらいでしょうか。C言語だと結構難しそうではあります。
この記事にコメントする
目次: 車
車を買い替えました。ジャガーXE Sです。マイナー車すぎて会社の人たちもあまり知らなさそうでした。
選んだ決め手はエクステリアです。フロントはキリっと、リアは目を閉じてる(?)デザインが気に入りました。セダンにクーペ並のスマートさを取り入れたスタイルもめちゃ良いです。
エンジンはV6 3.0Lスーパーチャージャー(340馬力)で、アクセルを踏むと超加速し数秒で100km/hになります。怖いよ。レガシィB4も超加速する車でしたがそれ以上です……。
中古車なので本体価格は安かったものの、修理費は高いらしくて今から恐怖してます。故障はどうしようもないので、せめてぶつけないように気を付けます。
ホイールは18インチが標準ですが、この車は純正オプションの20インチを履いています。交換用のタイヤの値段を見たらめちゃ高くて恐怖しました。しかも前後でタイヤの幅が違うので前後ローテーションもできません。お財布に厳しすぎる。
前オーナーさんもタイヤに苦戦したのか、左フロントがミシュラン、右フロントがヨコハマのタイヤになってました。そんなのあり?走るからまあ良いか?
ATは8速あります、何km/h出す想定なんでしょう。ブレーキもめちゃ効きます、最初レガシィと同じ強さでブレーキペダルをエイって踏んだら急ブレーキになってヒヤッとしました。
走りで気に入らない部分はほとんどないんですけど、ATの制御だけがかなり癖強です。
バカ強エンジンのおかげで2速発進でも普通に走っちゃいますが、走り始めが若干眠い感じは否めないです。1速さんが全然使われないのは意図した挙動なのか……?何かユーザー側の設定間違いなのか??謎です。
この記事にコメントする
目次: 車
車を買い替えてから1週間くらい経ちました。通勤路以外は幹線道路や高速をメインにしばし乗りました。インテリア、エクステリアは最高ですが、電子機器はイマイチな点が多いです。
良くない方から行きましょう。1つ目は燃費などを表示してくれるトリップコンピュータです。漢字が出せないらしくて全てカタカナです。メーター自体は格好いいのにトリップ表示は大昔のゲーム機みたいでアンバランスです。言語設定を英語にしておくとマシになるかなあ?
2つ目はカーナビで、解像度が低くてディスプレイが横長で進行方向の情報量が少なく、道路混雑情報を強調しすぎで道が見づらいです。表示の優先度をもう少し考えてほしかった。以前使っていたポータブルカーナビ(Panasonic Gorilla CN-G1300VD、2019年頃購入)はとても見やすかったので落差を感じます。あとカーナビは操作ボタンを連打するとたまにハングします。そんなことある……?
3つ目は自分の車だけだと思いますが、もうバックカメラが壊れました。全く映らない訳ではなく「カメラ システム イジョウ」と表示されてバックカメラが映らなくなり、しばらくすると復活する謎の挙動を示します。レガシィB4はバックカメラがなかったからかバックカメラを見る習慣がなくて、映らなくても「あれ?まあいいか」くらいで済んでいるのが不幸中の幸い?
良い点も紹介しましょう。1つ目はADAS(Advanced Driver Assistance Systems、先進運転支援システム)です。前の車に付いていって、前の車が止まったら合わせて自車も勝手に止まります。高速での巡行や渋滞時に便利な機能です。私のジャガーのADASは前後方向の制御(クルーズコントロール、一定速度もしくは前の車と一定間隔を保って走る機能)のみで、左右方向の制御(レーンキープ、道路に沿って走る機能)はないみたいです。
世の中のADASにほぼ共通で言えることですが、首都高や阪神高速のようなグニャグニャした道路で使うのはお勧めできません。急カーブでレーダーが前の車を見失った瞬間、設定速度まで急加速を始めるので割と怖いです。
2つ目はエコ運転支援システムが面白いです。走行中の運転操作ログを記録していて、走りに対する点数を出せます。雑にアクセルやブレーキを踏むと点数が下がり、エアコンを付けても点が下がります。今年の夏はエアコンなしはさすがに無理で、干物になってしまいます。秋にまた遊んでみよう。
3つ目はオーディオシステムです。MERIDIANのオーディオシステムが装備されていてこだわりの逸品なのですが……、私は車で音楽を聴かないので善し悪しがわからず宝の持ち腐れ状態です。スマホとBluetoothで連携できるようなので、今度試してみましょう。
この記事にコメントする
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報