Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I view assembly code produced for C functions? [duplicate]

I need to view the assembly code produced for certain C functions.

What flags should I use when compiling the C code using the g++ compiler?

like image 438
Syntactic Fructose Avatar asked Apr 26 '13 17:04

Syntactic Fructose


3 Answers

You may add the -S tag to see the assembly code.

Like for a file TEST.c, with gcc, do,

gcc TEST.c -S

clang also outputs the assembly code with a similar -S tag.

After that just look for a file with a .S extension.

like image 191
Sukrit Kalra Avatar answered Sep 23 '22 14:09

Sukrit Kalra


You can use the command objdump in a binary you have to see the assembler code, in linux

like image 23
fotanus Avatar answered Sep 19 '22 14:09

fotanus


With gcc or g++ compiler, you can use the -S flag to see the assembly code generated.

GNU C Compiler Documentation

-S: Stop after the stage of compilation proper; do not assemble. The output is in the form of an assembler code file for each non-assembler input file specified.

By default, the assembler file name for a source file is made by replacing the suffix .c, .i, etc., with .s.

Input files that don't require compilation are ignored.

Then you have to look for the identifier of your function in the file (if the compiler has not inlined it).

like image 23
md5 Avatar answered Sep 23 '22 14:09

md5