回答受付が終了しました

ID非公開

2021/5/11 20:10

77回答

組み込みC言語でのプログラム(命令)の最小単位はアセンブリ言語の一行になるのでしょうか?

C言語関連 | 工学60閲覧xmlns="http://www.w3.org/2000/svg">50

回答(7件)

0

C言語で実行される命令文としてはアセンブリ言語の1命令です。 通常C言語のコンパイラでアセンブラ命令の1行を記述できるようにしています。 時間稼ぎにNOPなどを良く使ったりします。

1

ひとつめ。いいえ。 ふたつめ。ない。 アセンブリ言語はヒトが読み易いように機械語を「記号」で示したもので、表現方法が違うだけで機械語そのものということができます。 機械語より小さい命令単位はありませんから、当然アセンブリ言語の1行より小さい命令単位も存在しません。 ただし、CPU内部の話に限って言えば、「マイクロコード」という機械語よりも小さい命令体系が存在する場合もあります(CPUの種類による)。

1人がナイス!しています

0

Cで書いたコードは単純に1対1で変換されるのではありません。 前後の命令や条件により、最適化されるので、他の命令に置き換わる事もあるし、冗長な命令が挿入されることもあります。 アセンブリで最小の命令より小さいものはありません。 例えば、Intel系のアセンブリ言語だとNOPと言う何もしない命令がありますが、これは1バイトのマシン語に置き換わります。 Intelでは1バイト1ワードなので、これより小さな単位は命令として存在しません。 近年のコンピュータで、1ワードを1バイト以下にしているCPUは無いのではないかと思います。

0

> C言語でのプログラム(命令)の最小単位はアセンブリ言語の一行 そもそもこの文章が意味を為していないのでは。Cとアセンブリ言語は別の言語、別の規則ですから。 しかも、最近のコンパイラがバリバリに最適化掛けたら出力はもはや元のCの文とは対応が取れなくなったりするので、Cの命令の最小単位というのも定義出来ないんじゃないかしら。