[2181] Re:汎整数拡張について
投稿者:d_kuma
2019/08/08 17:42:29
ご連絡遅くなりました。
アセンブラの解説をしていただき、ありがとうございます。
char型はアセンブラ上で変換が入るということで理解しました。
会社内で汎整数拡張について聞いてみたら、アセンブラ上で差異は無いと言われたので、間違って理解していました。
movsblというのが分からず、ネットで調べました。
movsはsign extension(符号拡張)によるコピー、blはfrom byte(8ビット) to long(32ビット)ということで理解しました。
これに付随して、さらに質問があります。
①汎整数拡張により、char型やshort型は、値を取り出す時に32ビットに変換されるので、int型より処理時間がかかったり、int型より実行ファイルが増大したりするのでしょうか?
②汎整数拡張があるので、char型やshort型を使わずに、int型を使った方が良いのでしょうか?
①については、char型やshort型を使うと、アセンブラ上で余計な変換が入って実行ファイルが増大してしまう、ということが書かれた技術書を読んだことがあります(『CプログラミングFAQ』だったと思います)。
②については、C言語ではint型が基準なので、できるだけint型を使うべきなのかなと思っています。
巨大な配列を扱う時にメモリのサイズを減らしたいのでchar型やshort型を使うのはいいと思うのですが、
そうでないなら、できるだけint型を使うべきではと思っています。