自己書き換えコード(じこかきかえコード、英: self-modifying code)とは、目的を問わず実行時に自分自身の命令を書き換えるコードを指す。 自己書き換えコードはアセンブリ言語を使用すると簡単に記述できる(CPUのキャッシュを考慮する必要がある)。また、SNOBOL4やLISPのようなインタプリタ型の高級言語でもサポートされている。また、COBOLにはALTERという命令が存在していた。コンパイラで実装するのは難しいが、CLIPPERとではその試みが行われている。バッチスクリプトも自己書き換えコードを頻繁に使用する。 再構成可能コンピューティングは、言ってみれば「自己書き換えハードウェア」である。再構成可能コンピューティングはソフトウェアとハードウェアの境界を曖昧にする概念である。