突然変異8について
・最初の突然変異8(=オリジナル)の挙動
・1体目のコピー
・2体目以降のコピーの挙動
[1]最初の突然変異8(=オリジナル)の挙動
先祖種と同様に、まず自分の体のコードを使ってコピー1体目を作成し始める。
突然変異により、callで予定よりも先に飛んでしまい、いくつかの命令を飛ばすことでレジスタの値がおかしくなる。
1体目のコピーを書き込んだ後、ret命令によりcall命令の次まで戻るはずだったが、レジスタの値がおかしくなっているため戻れず、ret命令を素通りする。
結局1体目のコピーに対するdivideは行われないため、1体目のコピーは活動しない。
オリジナルはret命令を素通りし、本来は進むはずのない隣の個体のコードを読み始めてしまう。
隣の個体のmal命令を実行し、2体目以降のコピーを作成し始める。
しかしながらスタックポインタの値がおかしくなっているため、次のcall命令は実行されず素通りする。
続いてdivide命令が実行され、2体目以降のコピー体にcpuや権限が付与され独立するが、callを素通りしたためコピーはされておらず、mal命令により確保された空っぽの領域が独立することとなる。
次のjmp命令によりmal命令まで戻ることになる。
こうしてmalとdivideを繰り返し、空っぽのコピー体を作成し続けることになる。
[2]1体目のコピー体
オリジナルによって、1体目用に確保された領域に命令のコピーは行われたが、divideが実行されなかったためcpuと権限が与えられず、独立しないままとなり、活動をすることはない。
作りかけのまま放置される。
[3]2体目以降のコピー体
オリジナルが隣の個体のmal命令とdivide命令を読み込んで実行することにより、2体目以降のコピー体に領域とcpuや権限が付与され独立はするが、コピーはされていないため中身は空っぽとなっている。
活動を開始しても中身が空っぽなので、実行するための命令は持たず、エラーのみを起こし続ける。