2012-07-02 8 views
0

64 비트 정수형을 32 비트 정수로 나누려고합니다. RVDS 4.1을 도구 체인으로 사용하고 있습니다.RVDS에서 Cortex-M0과의 정수 구분

Cortex-M0에는 하드웨어 제수가 없으므로 아래 작업을 수행 할 수 있습니까? 그렇다면 어떻게?

unsigned long int b = 2590202; 
unsigned long long int a = 953502716552001ULL; 
unsigned long long int result; 
result = a/b; 

답변

1

컴파일러는 소프트웨어 64 비트 나눗셈 알고리즘을 수행하는 라이브러리 서브 루틴에 대한 호출로서 나눗셈 연산을 컴파일합니다. 컴파일러에게 수학 라이브러리와 연결하도록 지시해야 할 수도 있습니다. RVDS에 대한 특별한 경험이 없습니다.

코드를 직접 컴파일하고 어떤 결과가 나타나는지보십시오. 생성 된 기계 코드를 분해하여 작동 원리를 확인하십시오. 매우 교육적이어야합니다.

+1

RVDS는 내장 라이브러리 함수를 사용하여 Cortex-M0에서이 작업을 수행합니다. "__aeabi_uldivmod." 나는이 함수를 나누는 연산자를 나눌 수있는 것을 보았습니다. – albin