目次: 車
車を買い替えました。ジャガーXE Sです。マイナー車すぎて会社の人たちもあまり知らなさそうでした。
選んだ決め手はエクステリアです。フロントはキリっと、リアは目を閉じてる(?)デザインが気に入りました。セダンにクーペ並のスマートさを取り入れたスタイルもめちゃ良いです。
エンジンはV6 3.0Lスーパーチャージャー(340馬力)で、アクセルを踏むと超加速し数秒で100km/hになります。怖いよ。レガシィB4も超加速する車でしたがそれ以上です……。
中古車なので本体価格は安かったものの、修理費は高いらしくて今から恐怖してます。故障はどうしようもないので、せめてぶつけないように気を付けます。
ホイールは18インチが標準ですが、この車は純正オプションの20インチを履いています。交換用のタイヤの値段を見たらめちゃ高くて恐怖しました。しかも前後でタイヤの幅が違うので前後ローテーションもできません。お財布に厳しすぎる。
前オーナーさんもタイヤに苦戦したのか、左フロントがミシュラン、右フロントがヨコハマのタイヤになってました。そんなのあり?走るからまあ良いか?
ATは8速あります、何km/h出す想定なんでしょう。ブレーキもめちゃ効きます、最初レガシィと同じ強さでブレーキペダルをエイって踏んだら急ブレーキになってヒヤッとしました。
走りで気に入らない部分はほとんどないんですけど、ATの制御だけがかなり癖強です。
バカ強エンジンのおかげで2速発進でも普通に走っちゃいますが、走り始めが若干眠い感じは否めないです。1速さんが全然使われないのは意図した挙動なのか……?何かユーザー側の設定間違いなのか??謎です。
 この記事にコメントする
 この記事にコメントする
目次: ベンチマーク
以前(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言語だと結構難しそうではあります。
 この記事にコメントする
 この記事にコメントする
目次: 車
車を買い替えることにしました。来週のどこかでレガシィさんとはお別れとなります。新車登録が2005年、私が購入したのが2010年で、20年近く頑張ってくれて感謝しかありません。レガシィB4、とても良い車です。ありがとうスバルさん。
私が乗っているグレードは2.0 GTで、2L水平対向4気筒ターボ、260psを発揮します。3000rpmくらいから後ろから押されるような力強い加速をするのが印象的です。たぶん私はこの車の本気の力を使ってないですが、それでも合流、上り坂、追い抜きで苦労した記憶はありません。ハンドルが重めになっていて、足回りはセダンにしてはやや固めです、それが良いところでもありますね。
購入当時はターボ車が減りつつありターボ車はいずれ滅びると思いましたが、2010年くらいからダウンサイジングターボが大流行して今はNA車と半々くらいの勢いになっています。世の中は何が起きるかわからないものです。
無茶な運転はしてませんが、10年間一度もぶつけなかった壁に最後の日(大阪から東京に引っ越し移動の日)に限ってぶつけたり、リアバンパーもぶつけて取れてしまったり、だいぶベコベコになりました。次こそぶつけないように気を付けます……けど、いつかぶつけるんだろうな〜。
大阪は走ってもあまり面白くないのと、車に乗る用事もほぼありませんでした。東京もコロナ、リモートワーク、駐車場が結構遠いなどなど、ほとんど車に乗りませんでした。乗らなさすぎてバッテリーが何度も上がりましたし、もう車は要らないかなあ?とすら思いました。
駐車場に空きが出て近いところに止められるようになり、転職してから東京の会社には珍しく車通勤できるので車に頻繁に乗るようになりました。必要があれば乗るんだなと自分でも驚きました……。
 この記事にコメントする
 この記事にコメントする
| < | 2025 | > | ||||
| << | < | 07 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 | 
| - | - | 1 | 2 | 3 | 4 | 5 | 
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | 
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | 
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | 
| 27 | 28 | 29 | 30 | 31 | - | - | 
 wiki
 wiki Linux JM
 Linux JM Java API
 Java API 2002年
 2002年 2003年
 2003年 2004年
 2004年 2005年
 2005年 2006年
 2006年 2007年
 2007年 2008年
 2008年 2009年
 2009年 2010年
 2010年 2011年
 2011年 2012年
 2012年 2013年
 2013年 2014年
 2014年 2015年
 2015年 2016年
 2016年 2017年
 2017年 2018年
 2018年 2019年
 2019年 2020年
 2020年 2021年
 2021年 2022年
 2022年 2023年
 2023年 2024年
 2024年 2025年
 2025年 過去日記について
 過去日記について アクセス統計
 アクセス統計 サーバ一覧
 サーバ一覧 サイトの情報
 サイトの情報合計: 
本日: