CISCではハードウエアでサポートされているスタック操作命令がRISCにはなく、スタック操作などの処理は単純な命令を組み合わせて代替処理を行う。命令の組み合わせによって発生し得るパイプラインハザードはコンパイラでコード生成時に検出し、命令の順序を最適化することで回避する。排他制御などで不可欠なアトミック命令はRISCでもサポートされる。命令語長を固定長にすることでパイプライン処理の処理効率を向上させることができるが、プログラムをコンパイルする際にパイプライン動作を前提とした最適化を行う必要があり、コンパイラ作成には高度な技術が要求される。歴史.RISC設計思想.RISCの設計思想は命令セットを縮小することにある。この副作用として、命令を識別するのに必要なビットフィールド幅が小さくできるため、命令内にオペランドデータを直接含ませる余地が生じ、レジスタやメモリを使わずに済む場面が多くなった。同時にメモリへのインタフェースが単純化され(メモリにアクセスするタイミングが単純化され)、最適化できるようになった。RISC以前の設計思想.初期のプログラミング環境では、コンパイラは存在しなかった。プログラミングは機械語かアセンブリ言語で行われた。プログラミングをより簡単にするため、コンピュータの設計者はどんどん複雑な処理を行う命令を追加していった。それはつまり、現在ならば高度なプログラミング言語で関数(サブルーチン)レベルで実現されるべきものだった。当時の風潮としてコンパイラの設計よりもハードウェアの設計のほうが簡単であるという考えがあり、結果として複雑なことはハードウェアに担わせることとなった。高度な命令の追加を必要とする別の要因としてメモリ空間に強い制約があったことが上げられる。メモリは非常に高価で、システムに用意できるメモリ空間が限られていたので、プログラム容量を縮小することが強く要請された。例えば、当時のシステムには数キロバイトしかメモリが搭載されていなかった。そのため、業界は高度で複雑な命令を必要としていたし、命令は可変長になっていて、ひとつの命令でいくつものことをこなし、また、ひとつの命令でデータの転送と演算を同時に行っていた。当時は命令デコードを単純化するよりも命令にいろいろな機能を組み込むことが優先された。