@ zero_extendqisi2の意味
@ zero_extendqisi2gccアセンブリ出力での実際の意味と使用法について疑問に思いました。qisiが何を表しているのか、またはそれらの線に沿って何かを見つけることができませんでした。
コンテキストとしてはldrb r3, [fp, #-9] @ zero_extendqisi2、これはGCCでコンパイルされたRaspberry Pi ZeroW上のARMです。たとえば、unsigned charへの変換をint使用して、最適化を無効にして、オプションのないGCC9.2を使用してをリロードする場合。https://godbolt.org/z/7xnfqh。古いGCCはGodbolt(4.5)の最も古いものまでずっと、おそらく以前は同じコメントを印刷していました。
回答
これは、RTLの中に含まれる命令名、GCCの内部マニュアルの標準名一覧の下にzero_extendmn2。ここでm,nあり、機械モード qiとsi、それぞれのバイト及び32ビットの整数です。したがって、これは、バイト(ここではメモリからロードされる)を取り、それを32ビット整数(ここではレジスタr3内)にゼロ拡張する命令を生成していることを示すGCCの表示です。これはまさにARMldrb命令が行うことです。
2が何を表すのかはわかりませんが、GCCの命名規則の一部であるようです。
Peterが指摘しているように、GCCが-fverbose-asm。なしでアセンブリにそのようなコメントを含めるのは少し奇妙です。実際、コメントは、マシン記述ファイルのテンプレート文字列の一部としてコード化されていますarm.md。一部のGCC開発者が追加した後、取り出すのを忘れたのは、デバッグ支援であった可能性があります。
(課題のためにこれを提出する場合は、この投稿を適切に引用してください。)