2013-03-01 1 views
0

Для назначения компьютерной науки я должен написать небольшую программу на любом языке и определить отношение инструкций исходного кода к скомпилированным инструкциям машинного кода - как это сделать?Соотношение исходного кода/машинного языка

ответ

1

В зависимости от вашего компилятора вы можете использовать переключатель для создания ассемблерной версии вашего кода. Код ассемблера - это прямое мнемоническое представление кодов операций («машинный язык»).

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.