命令はすべてのビット列に対して割り当てられているのか


私は最近Cしか扱わないのですがハンドアセンブルとアセンブラを扱ったことがあります。しかし、教科書に沿った内容しか扱いませんでした。  
ふと今原点に帰り1と0の世界ですべてのビット列に対して命令が割り当てられているのか疑問に思いました

もし、割り当てられていなかったとしたら命令割り当てのないビット列を入れて実行したらどのようになってしまうのか今更ながら疑問に思います

扱ったと言ってもこの程度で、熱心に研究された方がいらっしゃれば回答を頂きたいなと思います。




全てに割り当てられているわけではない、と考えるほうが無難でしょう。

未割り当てのコードを実行した場合の動作については、3つに分類して良いかと思います。

  1. なにも起こらない (NOP相当、割り込みが発生するケースもこちらに入れて良いかも)
  2. ハングする (意図しない内部状態になり、誤動作するケースを含む)
  3. 隠し機能が実行される (厳密に言うと、公開されているドキュメントがないだけで、割り当てられてはいる)

実際に何が起こるかはCPUの種類や、場合によってはバージョンによっても異なってくるので、一概には言えないでしょう。

なお、未割当のコードを実行すると何が起こるかについては、[コンピュータシステムの理論と実装――モダンなコンピュータの作り方](http://www.oreilly.co.jp/books/9784873117126/)
のような本などで、CPUがコードを物理/電気的にどのように実行しているかを具体的に知ることで、おおよそのイメージが掴めるかと思います。

(以上は、熱心に研究したというわけではありませんが、経験と知識から考察した回答です)

