コピー2018.10.15C言語の関数の引数ですが、どんな型にすると効率が良いのでしょう。ALレジスタを見ると、8bitアクセスなので、一見効率がよさそうに見えます。|+-------+-------+-------+-------+-------+-------+-------+-------+引数なし、8bit、16bit、32bit、64bitの型の引数の関数を呼び出しした時に、アセンブラがどのように変化するか確認してみます。a.out引数なしだと、アセンブラはとてもスッキリしています。関数に何も書かないと、nopが入るのですね。0x0(%rax)次は8bitの引数の場合。char型を使ってみます。}takk@deb9:~/tmp$アセンブラです。0x0(%rax,%rax,1)呼び出し側はなんだか複雑ですね。shortの引数にします。}takk@deb9:~/tmp$ALレジスタがAXに変わっただけのようです。0x0(%rax)次は、32bit。func1のコードが短くなっています。retqmainも短くなっています。longでもよいのですが、分かりにくいのでint64_tにしました。}takk@deb9:~/tmp$32bitの時と同じコードサイズです。レジスタはrdiに変わってます。retq32bitも64bitもアセンブラのコードサイズは同じですね。8bit/16bitと比べると数バイト短くなります。引数の型は、32bit以上にすると、効率がよさそうです。中学浪人して高校に入ると不安でしょうがないでしょうねえ。自分だったら、高校は諦めて自宅で勉強してたかもしれません。急がば回れというので、ゆっくりでも前に進むということが大事ですね。MP)のソースを入手して、インストールすることにします。実行すると、ダウンロードされます。lz形式のファイル、...9-1.ソース・ビルド・インストールコマンドからパッケージを探すコマンド名からパッケージを探してみましょう。apt-fileを使います。apt-fileのインストール。2つのパッケージが表示されてしま...9-1.ソース・ビルド・インストールgrepの色の仕組み(その2)続きです。色が付かない時は、が表示されません。print_start_colorizeが実行されていないってことですね。print_start_colo...9-1.ソース・ビルド・インストールマイtruncateを作る(その3)前回まで自作のしょぼいtruncateを作ってましたが、本物のtruncateのソースを見て答え合わせしてみます。※truncateのソースは、全文を記事の最後に載せています。getopt_longを使ってま...9-1.ソース・ビルド・インストールgccのソースはどこ(その5)前回見つからなかったファイルは4つありました。上の階層まで戻って検索してみます。なると、ビルド時に生成されるファイルでしょうか。email.ホーム9.ソース管理9-1.ソース・ビルド・インストールスポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。