m68kプロセッサ用のgccを使用してコンテキストスイッチを実装しようとしています。私はすべてのレジスタd0、d1 ... d7とa0、... a7を保存するためにインラインアセンブリを使用する必要があります。私はインラインgccでループを使って各レジスタのコードを別々に書くのではなく、これらのレジスタを保存できるかどうか疑問に思っていました。コンテキスト切り替えのgccインラインアセンブリ
たとえば、
move.lの%のD0、一時 pcb.cpuregs.d0 =一時
私はループカウンタのようD0内の0を作りたいです。
はい、実際には、setjmpを使用してください。アセンブリコードを避けることができる場合は、そうしてください。 –
私はコルーチンのスタックポインタを独自のスタック空間に設定してから、 'setjmp'だけでは不十分です。関数呼び出し(および保存したいレジスタの関連する突然変異)を避けるために、このようにasmをインライン関数に入れるか、インライン化する必要があるか、マクロを使用する必要がありますか? – Alexander
コンパイラに依存しますが、インラインアセンブリを使用するのとまったく同じです。 –