2016-07-24 4 views
-1

나와 함께 동일한 C 코드에 대해 어셈블리 언어 코드가 다른 이유 Me와 내 친구는 GCC를 사용하여 동일한 .c 파일을 Google 할당에 대한 .s 파일로 변환했습니다. 하지만 우리는 서로 다른 어셈블리 언어 코드를 가지고 있습니다.같은 프로세서 (Intel x86_64)

나 OS : - GCC 4.7.2

친구를 사용하여 Windows 10 OS : - 우분투 사용하여 GCC 4.7.2

+2

아마 다른 컴파일러 옵션을 전달할 것입니다. 최적화 수준. –

+1

기본 옵션은 다를 수 있습니다. 'g ++ -dumpspecs> the_default_specs.txt'를 통해 확인할 수 있습니다. –

+0

최적화를위한 기본값 이후로 제공 한 옵션이 반드시 다를 수 있습니다. 또한, GCC가 어떻게 구축되었는지에 따라 다르게 인라인되는 몇 가지 사항이 있습니다. – MAP

답변

4

당신이 쓴이 프로그램은 두 개의 서로 다른 OS에서 실행되도록 컴파일됩니다. 둘 다 자체 시스템 콜과 호출 규칙을 가지고 있습니다. 컴파일 된 코드에는 매개 변수를 전달하는 다양한 방법, 값을 전달하는 데 사용되는 레지스터 및 선택한 최적화 수준이 있습니다.

+0

우리는 C 프로그램이 무엇인지 아직 모릅니다 ... – babon

+0

옙 ... 그러나 printf와 같은 적어도 하나의 함수 호출을 포함합니다. 그래서 다르다. –

+0

그가 크로스 컴파일 할 수있다. :) 그 .s 파일 없이는 말하기가 어렵다 : D – Ped7g