[解決済み] この関数の movzbl 呼び出しについて理解する手助けが必要です。
2022-02-01 01:34:42
質問
そこで、ここにあるアセンブリを見てCのコードを書こうとしています。
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
addl 8(%ebp), %eax
movzbl (%eax), %eax
movsbl %al,%eax
popl %ebp
ret
2つの変数があり、それらが足し合わされているのはわかりますが、関数がmovzblとmovesblを呼び出し始めるときを見ると、迷ってしまいます。 どうなっているのでしょうか?
どのように解決するのですか?
対応するCの関数は次のようなものです。
char fn(char * string, int index)
{
return string[index];
}
具体的には
movzbl
命令は、2つのパラメータの和に格納されているバイトをフェッチしてゼロパッドし、それを
eax
. そのため
movsbl
は、eax の最下位バイトを取り、符号拡張し、結果を eax に戻す命令です。
関連
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】IA-32 AT&T構文でのMOVZBL命令は何をするのですか?
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み】malloc():メモリ破壊
-
[解決済み】execvp: バッドアドレスエラー