내 자신의 ARM asm (32 비트 ARM/NEON)이 있습니다. 이 ASM 코드에서 나는 다음과 같이 C. 뭔가에서 구현되는 일부 기능을 호출 할 그것을 전화로 전환해야하는 일 ARM-ASM은 ConvolveC4는 Thumb2 것을 알고있는 경우ARM과 Thumb2 인터 워킹
ARM
NormCorrS0_S0_S0_ PROC
...
BL ConvolveC4 <-- implemented in C/C++
...
1) 엄지 2?
2) ARM-asm이 ConvolveC4가 무엇인지 알지 못하는 경우 분명히 ARM asm이 그대로 유지되지만 ARM 상태가 올바르게 전환되도록 ConvolveC4 측면에 베니어를 추가해야합니다.
BLX (아키텍처 v5T 이상 Thumb2가있는 모든 프로세서 포함)가있는 프로세서에서는 링커 트램펄린/베니어가 필요하지 않습니다. 링크 타임 (link-time)에서 링커는 호출자와 호출 수신자의 명령어 세트를 알고 있으며 'BL'을 'BLX'로 적절하게 변경할 수 있습니다. armlink가이 작업을 수행합니다. GNU ld에 대해서는 잘 모르겠지만 같은 것을하기를 기대합니다. – scott
어떤 어셈블러인지, 그리고이 사람이 사용하고있는 링커를 모르면이 모든 것을 알지 못할 수도 있습니다 ... –
저는 Windows RT (microsoft)에서 armasm을 사용하고 있습니다. 컴파일러는 호출 대상에 따라 bl/blx를 자동으로 삽입합니다. 그러나 32 비트 ARM을 실행하는 방법을 알 수는 없습니다. Thumb2에는 아무런 문제가 없지만 ARM에서는 이상한 오류가 발생합니다 ... ARM은 하드웨어 수준에서 OS에 의해 비활성화 될 수 있습니까? – Pavel