linuxのメモ

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

2016-04-11から1日間の記事一覧

文字列操作 - strlen()

概要 文字列の文字数を取得する 詳細 アセンブラ命令のrepneとscasb命令を使用して文字列の長さを取得する それぞれのアセンブラ命令は以下の操作を行う repne : %ecxレジスタの値が0になるまで処理を繰り返す scasb : %alと%ediの値を比較し、%ediの値を次…

ユーティリティー - va_end()

概要 可変長引数をリセットする 詳細 可変長引数を示すva_list型の変数にNULLを代入する

ユーティリティー - va_start()

概要 可変長引数の開始アドレスを取得する 詳細 このマクロでは以下の引数を受け取る 可変長引数を保持するva_list型の変数 : ap 呼び出し元の関数で受け取る引数のうち、最後の引数を示す : A _bnd()でAを_AUPBNDでアライメントした値をAのアドレスに加算す…

ユーティリティー - _bnd()

概要 値をアライメントした際に必要なサイズを取得する 詳細 このマクロでは以下の引数を受け取る 対象の変数を示す : X アライメントする値を示す : bnd Xのサイズとbndの値を加算し、算出した値とbndを否定した値の論理積を取得することでXをbndでアライメ…