メモリ割り当て - memset_orig()
概要
rdiレジスタの指すアドレスからrdxレジスタの値分のメモリを初期化する
詳細
1: ecxレジスタにsilレジスタの値を、raxレジスタに0x0101010101010101とsilレジスタの値の積をそれぞれ保存し、rdiレジスタの下位3bitが0でなければ以下の処理を行う
2: rcxレジスタにrdxレジスタの値をコピーし、rdxレジスタを右に6bitシフトした値をrdxレジスタに保存し、その値が0になれば4の処理にジャンプする
3: rcxレジスタをデクリメントしてからraxレジスタの値をrdiレジスタの指すアドレスに8個分保存し、rdiレジスタのアドレスを64加算しrcxレジスタの値が0になるまで処理を繰り返す
4: edxレジスタと4 - 6bitが1の値を論理積した結果が0の場合は6の処理にジャンプするが、それ以外の場合は結果の値を3bit右にシフトした値をecxレジスタに保存する
5: ecxレジスタをデクリメントしてからraxレジスタの値をrdiレジスタの指すアドレスに保存し、rdiレジスタのアドレスを8加算しecxレジスタの値が0になるまで処理を繰り返す
6: edxレジスタの下位3bitを保存し、その値が0になった場合は8の処理にジャンプする
7: edxレジスタをデクリメントしてからalレジスタの値をrdiレジスタの指すアドレスに保存し、rdiレジスタのアドレスを1加算しedxレジスタの値が0になるまで処理を繰り返す