2010-07-14 2 views
3

SPARC, IBM PowerPC에 대한 응용 프로그램을 개발하는 데 x86 및 x86-64 대상 이외의 별도 작성기가 필요합니까?SPARC, IBM Power CPU 용 개발 응용 프로그램에 x86, x86-64 타겟 이외의 별도의 컴파일러가 필요합니까?

사실이라면 Linux의 x86, x64 바이너리를 SPARC 및 PowerPC로 얼마나 쉽게 포팅 할 수 있습니까? 가상화를 사용하여 이러한 환경을 시뮬레이션 할 수있는 방법이 있습니까?

답변

5

첫 번째 대답은 Power Architecture 또는 SPARC 용 컴파일 된 코드를 개발하려면 해당 프로세서 용 코드를 생성하는 컴파일러가 필요하다는 것입니다. x86 또는 x86_64 코드를 생성하는 컴파일러는 Power Architecture 또는 SPARC에서 실행되는 코드를 생성하지 않습니다. x86이나 32 또는 64에서 실행되는 크로스 컴파일러가 Power 나 SPARC 코드를 생성 할 수 있습니다. 하지만 알아 두어야 할 것은 객체 파일 형식 (elf, xcoff 등)입니다. 지시 집합은 그림의 일부입니다.특정 출발점과 목표에 대한 자세한 내용을 제공하면 명확한 답을 얻을 수 있습니다.

둘째로, 일반적으로 이진 포팅에 대해서는 언급하지 않습니다. 우리는 어셈블리 언어와 C 또는 다른 언어를 포함 할 수있는 소스 코드를 포팅합니다. 이를 수행하는 프로세스에는 컴파일러 선택이 포함되며, 그 다음에 새 하드웨어의 코드를 컴파일, 포팅, 컴파일 및 링크하는 반복 프로세스를 시작할 수 있습니다. 나는 많은 세부 사항을 생략하고있다. 다시 한 번 질문에 더 구체적인 내용을 제공하면 구체적인 답변을 얻을 수 있습니다.

셋째, 언급 한대로, 아니요. 언급 한 시나리오에서 가상화를 사용할 수 없습니다. 수용 가능한 에뮬레이션 솔루션을 찾을 수 있습니다. 가능한 경우 자세한 내용을 다시 입력하십시오.

+0

안녕하세요, 세부 사항 : 우리는 레거시 Windows 응용 프로그램 (c, C++) 용 Linux에서 새로운 구성 요소 (C++)를 개발하려고합니다. API는 C로되어 있고 요구 사항은 Linux, Solaris 및 AIX입니다. 오늘 Dev Env는 MS VS2008입니다. 모든 의견 감사, – maruti

+0

그래서 레거시 Windows 응용 프로그램에 대한 소스 코드가 있으십니까? 이 레거시 응용 프로그램은 Linux, Solaris 및 AIX에서 실행해야하며 Windows 시스템에서 실행되며 다른 플랫폼에서 원격으로 통신합니다. –

+0

기존 앱 (서버)은 Windows에서 실행되며 Linux, Solaris (클라이언트)의 새 코드와 통신해야합니다. C, C++ API – maruti

0

Java 또는 LLVM을 사용하거나 다른 CPU를 테스트하려면 QEMU을 시도하십시오.

코드가 이식 가능하도록 작성된 경우 쉽습니다. 그렇지 않은 경우가 아닙니다. 플랫폼, 코드, 인라인 어셈블리 등에 따라 다양한 데이터 유형의 크기가있을 수 있습니다. LLVM과 QEMU에 대한

홈 페이지 :

+1

포인터 연산은 일반적으로 이식 가능합니다. 어셈블리 언어와 함께 분류하는 것은 어리 석다. –

+0

ㅎ, 나는이 물건에 경험이 없다. 그것은 32 비트 대 64 비트 권리의 문제입니까? – gtrak

+0

새 플랫폼에서 실행해야하는 코드가 없으면 다시 작성하거나 처음부터 다시 시작하는 경우 언어 선택권이있을 수 있습니다. 레거시 코드 일 때는 불가능할 수도 있습니다. –

1

아니, 가상화가 답이 아니다. 가상화는 하드웨어 플랫폼을 사용하고 동일한 하드웨어의 독립적 인 "가상"머신을 생성합니다. 따라서 x86에서 실행될 때 가상화를 사용하여 두 번째 x86 시스템을 생성합니다.

완전히 다른 하드웨어 아키텍처를 시뮬레이트하려면 emulation을 조사해야합니다.

한 아키텍처에서 다른 아키텍처로 소프트웨어를 이식하는 것이 얼마나 쉬운 지 소프트웨어가 작성된 방법에 달려 있습니다. 하나의 아키텍처에서 특정 것이지만 다른 하나는 그렇지 않은 경우 (예 : x86은 비 정렬 메모리 액세스를 처리 할 수 ​​있지만 SPARC에서는 그렇지 않습니다) 이와 같은 문제를 해결해야합니다. 소프트웨어가 하드웨어의 특정 엔디안을 가정하면 이식하기가 어려울 수있는 또 다른 예가 될 수 있습니다.

1

SPARC, IBM PowerPC는 별도의 x86 이외의 compliers 및 x86-64에 목표를 필요로? 당신도 생각을 않은 곳

난 정말 날카로운로 싫어하지만 (즉, 완전히 별도의 기계 langauge 이야기) IBM PowerPC와 SPARC는 x86 또는 x86-64의 명령 세트를 지원하지 않는 점을 감안 그들은 것 호환 가능합니까?

가상화를 사용하여 환경을 시뮬레이트하는 방법이 있습니까?

아마도 가능하지만 기계 코드를 번역하거나 잘 해석해야하기 때문에 실제로 느릴 수 있습니다. CPU 아키텍처가 다르다면 하드웨어 가상화가 작동하지 않습니다. SPARC와 PowerPC는 단지 "같은 것을 나타내는 다른 레이블"이 아니라 내부적으로 매우 다릅니다.

+0

안녕하세요 톰, 귀하의 응답을 주셔서 감사합니다, snippy :). 나는 CPU가 다르다는 것을 알고 있었지만 제 동료는 가상화를 대답으로 제안 했으므로 질문은 – maruti

+0

입니다. 그러면 동료가 "잘못"합니다. 대부분의 가상화는 "동일한 칩셋"을 의미하는 하드웨어 지원에 의존합니다. 다른 CPU (Apple이 1 년 전에 Motorola에서 PowerPc로 옮겼을 때 가지고 있던)를 해석/시뮬레이트하는 것이 있지만, 일반적으로 오버 헤드는 중요합니다. 실제로 해결책은 아닙니다. – TomTom

관련 문제