programing

Intel 프로세서와 AMD 프로세서의 어셈블리어가 동일합니까?

skycolor 2023. 8. 25. 23:27
반응형

Intel 프로세서와 AMD 프로세서의 어셈블리어가 동일합니까?

C 언어는 이식성을 달성하기 위해 Unix를 작성하는 데 사용되었습니다. 서로 다른 컴파일러를 사용하여 컴파일된 동일한 C 언어 프로그램이 서로 다른 기계 명령을 생성합니다.Windows OS가 Intel AMD 프로세서에서 모두 실행될 수 있는 이유는 무엇입니까?

AMD와 인텔 프로세서(*)는 공통적으로 많은 명령어 집합을 가지고 있기 때문에 컴파일러나 어셈블러가 두 개 모두에서 "동일한" 바이너리 코드를 작성할 수 있습니다.

그러나 한 제조업체의 다른 프로세서 제품군도 일반적으로 "확장" 또는 기타 명령어 집합을 가지고 있습니다.x87 보조 프로세서를 무시하고, 이것이 마케팅 포인트가 된 것을 처음 기억하게 된 것은 모든 것이 갑자기 "MMX 기술로" 진행되었을 때였습니다.프로세서에서 실행될 것으로 예상되는 이진 코드는 확장을 방지하거나 확장을 사용하기 전에 CPU 유형을 탐지해야 합니다.

Intel의 Itanium 64비트 아키텍처는 AMD의 x86-64 아키텍처와 완전히 달랐기 때문에 한동안 64비트 제품이 호환되지 않았습니다(그리고 Itanium은 x86과 전혀 비슷하지 않았지만 x86-64는 64비트 명령어를 추가하여 명령어 집합을 확장했습니다).인텔이 먼저 깜박이고 x86-64를 채택했지만, 여전히 몇 가지 차이점이 있습니다: AMD64와 Intel 64의 차이점

Windows에서는 거의 모든 코드에 대해 공통 x86 또는 x86-64 명령 집합을 사용합니다.다양한 드라이버와 코덱이 여러 버전으로 배송되고 CPU를 조회한 후 올바른 드라이버를 선택해도 놀라지 않습니다.

(*) 사실 인텔은 ARM(인텔의 ARM 프로세서를 Xscale이라고 불렀는데, 그 사업을 매각한 것 같습니다.)을 포함한 다양한 종류의 프로세서를 만들거나 만들었습니다.그리고 AMD는 다른 프로세서도 만듭니다.하지만 어떤 Intel/AMD 프로세서를 의미하는지는 알고 있습니다 :-)

AMD는 Intel과 호환됩니다.그렇지 않았다면, 그들은 결코 시장에서 발판을 마련하지 못했을 것입니다.

이들은 사실상 클론 호환성이 있습니다.

의심할 여지없이 메인스트림 Intel 및 AMD 프로세서의 명령 집합은 동일합니다.

Windows가 ARM 또는 전원에서 실행되지 않음예를 들어 PC 칩은 기본 명령 집합에 다소 의존하기 때문입니다.

하지만 대부분의 Windows는 C++로 작성되어 있으며(제가 알기로는) 다른 아키텍처로 이동할 수 있어야 합니다.Windows NT는 PowerPC와 다른 아키텍처에서도 실행되었습니다.

Intel의 80x86 CPU와 AMD의 80x86 CPU는 "대부분 동일한 종류"이지만 일부는 완전히 다릅니다(예: 가상 시스템 확장 - SVM 대 VT-x). 일부는 지원되거나 지원되지 않을 수 있습니다.그러나 동일한 제조업체의 다른 CPU에서도 일부 사항이 다릅니다(예: 일부 Intel 칩은 AVX2를 지원하고 일부는 지원하지 않음).

차이를 처리하는 방법은 여러 가지가 있습니다.

  • 동일한 코드가 모든 80x86 CPU에서 실행되도록 공통 하위 집합만 사용합니다(예: 8086 칩처럼 처리).

  • CPU 범위에 공통적인 기능의 하위 집합을 사용하여 해당 범위의 모든 80x86 CPU에서 동일한 코드가 실행되도록 합니다.이는 매우 일반적입니다(예: "이 소프트웨어에는 64비트 확장을 지원하는 80x86 CPU(및 OS)가 필요합니다").

  • 설치 시간 테스트를 사용합니다.예를 들어 설치 관리자가 소프트웨어가 설치되는 컴퓨터에 적합한 복사본을 결정하는 소프트웨어의 복사본이 4개 있을 수 있습니다(4개의 서로 다른 범위의 CPU에 대해 컴파일됨).

  • 런타임 테스트를 사용합니다.예를 들어, 코드는 다음을 사용할 수 있습니다.CPUID… 위한 if( AVX2_is_supported() ) { set_function_pointers_so_AVX2_is_used(); } else {set_function_pointers_so_AVX2_is_not_used(); }참고: 일부 컴파일러(Intel의 ICC)는 런타임 테스트를 수행하는 코드를 자동으로 생성할 수 있습니다.

이러한 옵션은 상호 배타적인 옵션이 아닙니다.예를 들어 설치 관리자가 32비트 버전이 아닌 64비트 버전을 설치하도록 결정한 다음 64비트 버전에서 런타임에 지원되는 기능과 다른 코드를 사용하도록 확인할 수 있습니다.

또한 OS의 다른 부분은 별도로 처리할 수 있습니다.예를 들어 OS에는 가상화를 지원하기 위한 6개의 서로 다른 부트 로더, 4개의 서로 다른 "HAL", 4개의 서로 다른 커널 및 3개의 서로 다른 "커널 모듈"이 있을 수 있습니다. 이러한 모듈 중 일부는 런타임 테스트를 수행하고 일부는 그렇지 않을 수 있습니다.

Intel 프로세서와 AMD 프로세서의 어셈블리어가 동일합니까?

의 거의 CPU 제조업체의 ).Intel, AMD, VIA, Cyrix, SiS »).일반적으로, 그들이 알고 있는 것들만 사용하는지 확인하는 것은 프로그래머(또는 컴파일러)에게 달려 있습니다.는 이 할 수 합니다(예: NASM은 " " "라는 기능을 합니다."(예: "NASM"CPU ...프로그래머가 지정된 CPU에서 지원되지 않는 명령을 볼 경우 오류를 생성하도록 어셈블리어를 말할 수 있도록 지시합니다.

AMD와 Intel은 동일한 명령 집합을 사용합니다.

AMD 프로세서 또는 Intel 프로세서에 Windows를 설치할 때 Windows는 컴퓨터에서 코드를 "컴파일"하지 않습니다.

저는 많은 사람들이 대학 시절에 이 주제에 대해 혼란스러워 했던 것을 기억합니다.그들은 "설정"이 당신의 컴퓨터에서 코드를 컴파일하고 있다는 것을 의미한다고 믿습니다.절대 아닙니다.자유 영역 이외의 대부분의 Windows 응용 프로그램은 이진 파일로 제공됩니다.

휴대성과 관련하여, 그것이 반드시 100% 사실인 것은 아닙니다.C는 휴대성이 뛰어나지만, 대부분의 경우 특정 OS나 시스템을 위해 작성하면 해당 상자에서만 코드를 컴파일/실행할 수 있습니다.예를 들어 특정 유닉스 시스템은 파일과 디렉터리를 다르게 처리하므로 100% 이동이 불가능할 수 있습니다.

Intel 프로세서와 AMD 프로세서의 어셈블리어가 동일합니까?어셈블러는 프로세서에서 실행할 프로그램을 조립하므로 질문에 결함이 있습니다.프로세서는 어셈블러를 사용하지 않습니다.

인텔과 AMD 프로세서가 동일한 어셈블리어를 실행할 수 있다는 뜻입니까?그렇다면 답은 예스!!!

모든 어셈블리어는 구조화된 텍스트 파일에서 다른 프로그램을 어셈블리하는 프로그램입니다.Visual Basic은 어셈블리어의 한 예입니다.

언급URL : https://stackoverflow.com/questions/1109569/do-intel-and-amd-processor-have-the-same-assembler

반응형