読者です 読者をやめる 読者になる 読者になる

linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

自己修正コード - __OLDINSTR()

概要

命令に必要なサイズ分のアドレスを確保する

詳細

以下の引数を受け取る

  • 置換元となる命令を示す文字列 : oldinstr
  • 置換する命令の番号を示す : num

alt_rlen()numを引数として実行し、命令が配置されるアドレスのサイズ取得し、この値と置換元の命令のサイズを示すalt_slenのサイズと比較する

比較した結果、置換する命令のサイズの最大値が元の命令のサイズよりも大きい場合2つのサイズの差のサイズ分、スペースをNOP命令*1で埋める

*1:バイトコード0x90で示される命令はNOPとして認識される