Нет абсолютно никакой достоверной связи между кодом C ++ и тем, какой машинный код генерирует компилятор.
Некоторые люди говорят "по моему опыту ... и т. Д. И т. Д." но это ненадежнее, чем вы можете себе представить. Не многие люди имеют реальный опыт в любом существенном сечении всех возможных комбинаций компилятор / архитектура. [Редактировать: Я думаю, что Crashworks доказывает, что я ошибаюсь. : -)]
Рассмотрим следующий список компиляторов C ++ :
- C ++ Builder
- Turbo C ++ Explorer
- Компилятор C ++
- Borland C ++
- Turbo C ++ для DOS
- Clang
- Comeau C / C ++
- удобная система разработки компилятора
- Цифровой Марс
- DJGPP
- EDGE ARM C / C ++
- MinGW
- GCC C ++ (G ++)
- HP AC ++
- Компилятор Intel C ++
- МИКРОТЕКИ
- MULTI
- Открыть Watcom
- Open64
- Рабочая станция PGI
- ProDev WorkShop
- Компилятор RealView C / C ++ (armcc)
- SAS / C C ++
- Sun Studio
- TenDRA
- VectorC
- Visual C ++
- VisualAge C ++
- XL C / C ++
Теперь умножьте этот список на следующий краткий список архитектур машин :
- ARM
- Atmel AVR
- Blackfin
- HC12
- H8 / 300
- IA-32 (x86)
- x86-64
- IA-64
- Motorola 68000
- MIPS
- PA-RISC
- PDP-11
- PowerPC
- R8C / M16C / M32C
- СПУ
- System / 390 / zSeries
- SuperH
- SPARC
- VAX
- A29K
- ARC
- ETRAX CRIS
- D30V
- DSP16xx
- FR-30
- FR-V
- Intel i960
- IP2000
- M32R
- 68HC11
- MCORE
- MMIX
- MN10200
- MN10300
- Motorola 88000
- NS32K
- ROMP
- Stormy16
- V850
- Xtensa
- AVR32
Теперь умножьте на операционную систему и флаги оптимизации, и вы можете обнаружить, что всем не хватает опыта.