32 ビット整数を受け取り、それを数字配列に変換して別の数値システムで表すコードを書くことができました。質問: これを 64 ビットに拡張するにはどうすればよいですか? Digital Mars C/C++ コンパイラでは:
void get_digits_asm()
{
__asm
{
pushf
movd xmm0,eax
movd xmm1,ebx
movd xmm2,ecx
movd xmm3,edx
movd xmm4,edi
mov eax,[variable_x]
mov ebx,[number_system]
mov ecx,0h
mov edi,0h
begin_loop:
mov edx,0h
div ebx
lea edi,digits
mov [edi+ecx*4],edx
add ecx,01h
cmp eax,ebx
ja begin_loop
mov edx,0
div ebx
lea edi,digits
mov [edi+ecx*4],edx
inc ecx
mov [digits_total],ecx
movd edi,xmm4//pop edi
movd edx,xmm3//pop edx
movd ecx,xmm2//pop ecx
movd ebx,xmm1//pop ebx
movd eax,xmm0//pop eax
popf
}
}
この関数が戻ると、LSB から MSB に配置された数字の配列が返されます。
例: 5 は、数体系 2 では 101 です。232343435 は、システム 8 では 54545... です。これを 64 ビットで作成する方法を知りたいです。私のOSは32ビットです。CPU は pentium-M centrino-laptop ですが、どうすればよいですか?