Для назначения компьютерной науки я должен написать небольшую программу на любом языке и определить отношение инструкций исходного кода к скомпилированным инструкциям машинного кода - как это сделать?Соотношение исходного кода/машинного языка
ответ
В зависимости от вашего компилятора вы можете использовать переключатель для создания ассемблерной версии вашего кода. Код ассемблера - это прямое мнемоническое представление кодов операций («машинный язык»).
With gcc
(рассмотреть добавление -masm=intel
, если вы предпочитаете Intel по умолчанию AT & T синтаксис):
gcc -S ...
мои знания других компиляторов на unixoid системы также поддерживают -S
. Это пропустит компиляцию, и вы захотите найти файлы, названные в честь ваших исходных файлов, но с заменой расширения на .s
.
Или with MSVC:
cl.exe /FA
... Вы можете добавить c
(т.е. /FAc
), который также будет компилировать его. Тогда вы захотите найти файлы .asm
.
Также см: How can I see the assembly code for a C++ program?
После этого не будет сделано, вы в основном сравнить (соответствующие!) Строк исходного текста. Однако это зависит от вашего собственного (или вашего учителя) суждения. Есть инструменты для подсчета SLOC, например. ссылающийся в этой статье в Википедии: SLOCCount.
NB: утверждение в первом абзаце о прямом представлении несколько неверно. Если мы говорим о макроассемблере, то это не выполняется из-за макросов. Но даже несмотря на то, что MSVC использует макроассемблер в качестве backend, компилятор не использует возможности макросов, поэтому они не должны мешать (много) в подсчете SLOC.