C

libc無しにHello World

[やりたいこと] ・なるべく小さな実行ファイル(バイナリ)を作る ・そして、そのバイナリでアセンブラの勉強をする [環境] ・CentOS7 x64 [Cソースコード] 以下のWikiの「標準Cライブラリなし」ソースをそのまま使わせてもらいました。 フリースタンディン…

volatileの影響をアセンブリで比較

volatileはコンパイラによる最適化を抑止する修飾子のことだった気がする。 volatileの有無により、アセンブリがどう違うのかを比較してみる。 (どうでもいいけど、アセンブラとアセンブリの違いがわからない。。。) 試してみた結果、volatile有りだと演算…

gccはプリプロセス、コンパイル、アセンブル、リンク

C

gccはコンパイルするツールという認識しかなかったけど、プリプロセス、コンパイル、アセンブル、リンクという4つの処理をまとめて行ってくれていたらしい。 以下のコマンドで1つずつ処理を進められるので、中間ファイルを確認できる。 プリプロセス:gcc …

fileコマンド

今日もファイルを調べるコマンドについて。 fileコマンドでファイルの種類がわかる。 ASCIIかUTF-8かバイナリかなど。。。 バイナリに対しては、ELF形式かとか動的リンクされてるとかstripされてるかとか、まだまだ調べ甲斐がありそう。 [shin@cent6-5 hello…

odコマンド

Linux上ではテキストファイルがどのように扱われるのか気になったので調べてみる。 odコマンドとやらでファイルがバイナリ表示できるようだ。 -xで16進表示。 -cでアスキー表示。 [shin@cent6-5 helloworld]$ od helloworld.c -x 0000000 6923 636e 756c 656…