2009-02-26 8 views
3

저는 주로 직장에서 임베디드 코드를 작성하고 있습니다. 우리는 장기간에 걸친 대규모 프로젝트를 개발했으며 여러 세대를 거쳐 현재는 작성된 프로세서가 중단되고 동일한 제조업체의 프로세서를 계속 사용하는 것도 불가능할 수 있습니다. (아마도 TI에서 르네사스 FPU 마이크로 프로세서로 전환 될 것이다). 문제의 일부는 어셈블리에서 일부 코드가 작성된다는 것입니다.
나는 전환을 가능한 한 쉽게 할 수있는 방법을 찾고 있으며, 그러한 전환이 미래에 필요할 경우 더욱 부드럽게 만듭니다.
무엇을 제안 할 수 있습니까?프로세서 간 전환

답변

13

가능한 한 많은 코드로 일반적인 C 버전을 생성하십시오.

마지막 구현이 손으로 최적화 된 어셈블리에 있어야하는 경우 시간 낭비처럼 보일 수 있지만 실제로는 그렇지 않습니다.

새로운 타겟을 최적화 할 때 어셈블리에서 키 섹션을 다시 작성할 수 있지만 C 버전을 사용하면 먼저 새로운 타겟 각각에 대해 빠른 속도로 실행되도록하고 두 번째로 비교할 수있는 참조 구현을 제공합니다 최적화 할 때 둘 다 삶을 훨씬 더 쉽게 만듭니다.

모든 것이인데, 대부분의 시간이 소비되는 코드 섹션 만 손으로 ​​최적화 된 어셈블리라고 할 수 있습니다. 어셈블리에 대규모 프로젝트를 모두 작성하는 것은 불필요한 노력을 낭비하는 것입니다. 나머지는 C로 유지 될 수 있습니다. 그러나 C 버전이 실행될 때까지 집중해야 할 항목을 알지 못해 프로필을 작성할 수 있습니다. 추측 할 수 있지만 알 수는 없습니다.

+1

동의 : 대부분의 단순한 C 컴파일러를 제외하고는 모든 일을 쉽게 수행 할 수있는 한 명령 스케줄링 및 색칠 등록 작업이 훌륭합니다. 나는 정상적인 C 루틴에서 1 개의 IPC 이상을 얻을 수있다. – Crashworks

+0

동의! 어셈블리는 더 잘 모르는 엔지니어를위한 것입니다. – Nate

+0

예, 아주 좋은 답변입니다. – none