Question: I have a project where the target will probably be an embedded system of some type with a compiler that's probably C89 or equivalent. However, I would like to use the GCC extensions from GNU C.

Is there a way to tell GCC to compile to C89? Maybe some assembly/disassembly process?

Answer: 
Compiling to C89 is not the same the same as gcc with extensions, unfortunately. They are in fact mutually exclusive. 

You need to decide for sure which you want for your project, and then look at the -std=c89 (and possibly -pedantic) options to gcc if you really want to stick to C89. If you want GNU extensions, look at the gcc docs, there is a fairly extensive set of options for the -std= argument. 

There are also a number of gcc cross-compilers in existence, take a look at those and see if they fit your embedded target platform, you may have an easier path available.
I don't know about GCC 5 and higher, but before the *default* was actually C89 with GNU extensions.

If you want to be explicit use the `-std` flag, like `-std=gnu89`.

See [Options Controlling C Dialect](https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gcc/C-Dialect-Options.html#C-Dialect-Options) in the online manual.

---

If you want to use GNU extensions, then you must use a compiler that actually support them, like GCC. If you don't want to use GNU extensions then you can use any compliant compiler.

Also note that GCC is *very* portable. While the later versions might not support your target platform, there are probably earlier versions that does.