1

를 원하십니까 웹은 C++에서 팔을 교차 컴파일하는 방법을 언급하고 있지만 크로스 컴파일러 자체의 소스 코드는 어디에서/어떻게 가져 오지는 않습니다.기본적으로에 팔 코어 텍스 M-</p> <p>모든 정보 ++ 내 마지막 해에 갈거야와 흥미로운 제안 된 프로젝트의 아이디어는 C에서 크로스 어셈블러를 만드는 것이었다 ++ C에 팔 코어 텍스 크로스 어셈블러를 작성하는

구체적인 내용은 무엇입니까? 주요 여행 업을 피하기위한 조언이 있습니까?

미리 감사드립니다.

+0

나는 당신이 무엇을 요구하고 있는지 정확히 모르겠습니다. GCC 소스는 GCC 웹 사이트에 있지만 크로스 어셈블러를 작성하는 경우 왜 컴파일러 소스가 필요한지 잘 모르겠습니다. – us2012

+0

저는 기본적으로 팔 크로스 컴파일러를 작성하기 위해 무엇을 봐야 하는지를 묻습니다. – gavlaaaaaaaa

+2

크로스 컴파일러 또는 크로스 어셈블러? 두 경우 모두 테스트 파일을 열고 구문 분석하고 명령에 응답해야합니다. asm의 경우 명령어와 피연산자를 분리하고 기계 코드를 작성해야합니다. –

답변

1

cross compiling이 프로젝트를 컴파일 할 위치에 따라 달라 지므로 C++로 ARM 어셈블러를 작성한다고 가정합니다. 다음은 몇 가지 지침입니다.

먼저 구문을 결정해야합니다. 그것은

  • 는 기존의 도구를 사용하여 프로젝트를 확인할 수
  • 에 사용하는 사용자에게 제공하는 작업을 쉽게 것

    1. 때문에 기존의 것을 사용하는 것이 가장 좋습니다. 표준 컴파일러를 사용하여 조각 조각에 대한 어셈블리를 생성하고 자신의 어셈블러를 실행하여 이진 코드를 생성 할 수 있습니다.

    결국 나는 ARM part에 중점을두고 다른 비트는 제외하고 GNU's syntax을 사용합니다.

    그런 구문에 대한 파서를 작성해야합니다. 파서 생성기를 사용할 수는 있지만 반면에 어셈블리 구문이 일부 경우를 제외하고는 그렇게 복잡하지 않기 때문에 손으로 직접 작성하는 것이 더 쉬울 수도있는 경우에는 파서 생성기를 사용할 수 있습니다.

    파서를 마무리 할 수 ​​있으면 모든 지침을 받아서 이진 값으로 인코딩 할 수 있어야합니다. 또한 어딘가에 문자열이나 데이터를 앱에 저장하고 해당 주소 (주소)에 대한 지시를 허용하는 것과 같은 지원 언어 구조를 처리해야합니다.

    표준 바이너리를 제작하려면이 부분에서 바이너리를 생성 할 수 있어야하며 로더와 같은 다른 시스템에서 어셈블러가 생성 한 바이너리를 사용할 수 있어야합니다.

  • 1

    십자가의 * 어셈블러 *의 등가 가스 목표 X에서 실행 (호스트 H에) 컴파일 될 수 있지만, 코드를 조립 : 나는이 두 가지 가이드가 도움이 될 것 같아요 타겟 Y.

    GCC는 어셈블러의 구현 언어입니다. 그러나 크로스 어셈블러는 GCC++와 같은 플랫폼에서 실행되기 때문에 모든 프로그램과 같습니다. 이 프로그램은 단순히 외설 공간을 생성합니다.