linuxはCプログラムのアセンブリコードを表示します(読めます)


Cプログラムファイル名をtestとする.cを例にgccコマンドを書くと以下のようになる.を選択します.生成ファイルのファイル名を指定しない場合は、デフォルトはa.outです.
方法1:生成する.sファイル
gcc -S -o test.s test.c	// S
vim test.s

方法2:先生成.oファイル、再逆アセンブリ
gcc -c -o test.o -test.c
objdump -d test.o
gcc -g -c -o test.o -test.c	//objdump S -g
objdump -S test.o

objdumpには複数のコマンドオプションがあり、必要に応じて、-d:コードセグメントを逆アセンブリ-S:コードセグメントを逆アセンブリすると同時に、逆アセンブリコードとソースコードを交互に表示し、コンパイル時に-gを与える必要があります.つまり、デバッグ情報が必要です.-C:C++シンボル名を逆解析します.-l:逆アセンブリコードにソースコードのファイル名と行番号を挿入します.-j section:指定したsectionのみを逆アセンブリします.複数の-jパラメータを使用して、複数のsectionを選択できます.
参考記事objdump逆アセンブリの使用例
使用するgccコマンドは、上記と同様です.
また、いくつかの複雑なコードについては、アセンブリコードが読めない命令が多くなる可能性があり、以下のコマンドでスタック保護を閉じるなどして隠すことができ、アセンブリコードが読めるようにします.
gcc -fno-pic -fno-stack-protector -no-pie -c -o test.o test.c
objdump -d test.o