mov ecx,就支持到 unsigned logn了吗?要更大的如unsigned logn logn有没有可能?
时间:2010-12-06
来源:互联网
数字高达100亿,约10G,似乎只能用unsigned logn logn类型的了,但定义:
unsigned logn logn a=0;
mov ecx,a这里出错了
作者: kfrght 发布时间: 2010-12-06
作者: zara 发布时间: 2010-12-06
64 位,要么在 64 位的 cpu 上使用 rcx 这样的寄存器;或者自己用内存或 32 位的寄存器对来进行数据的组织和运算了。WinAPI 也提供些个简单的 64 运行函数的,UInt32x32To64() 等。
要支持类似这样的,用什么:
unsigned logn logn a=0;//演示值,实际值很大
mov ecx, a
作者: kfrght 发布时间: 2010-12-06
作者: zara 发布时间: 2010-12-06
ecx 是 32 位,怎么能 long long 呢。可以自己用 ebx:ecx 这样的两个 32 位寄存器组对来操作 64 位的值
zara大哥,小弟是新手,老大给个例子吧
作者: kfrght 发布时间: 2010-12-06
a2 dq ?
b2 dq ?
c2 dq ?
; ...
mov ecx, dword ptr a2
mov ebx, dword ptr a2[4]
add ecx, dword ptr b2
adc ebx, dword ptr b2[4]
mov dword ptr c2, ecx
mov dword ptr c2[4], ebx
作者: zara 发布时间: 2010-12-06
例子,简单些的比如两个 long long 相加:(a2+b2 -> c2)
a2 dq ?
b2 dq ?
c2 dq ?
; ...
mov ecx, dword ptr a2
mov ebx, dword ptr a2[4]
add ecx, dword ptr b2
adc ebx, dword ptr b2[4]
mov dword ……
太深奥了阿,弄不懂,老大能否帮我把这个转成支持64位的:
void GetCRC32(
//const BYTE *pbData,//本来是这样的
const short *pbData,//为支持64位改成这个
__int64 nSize
){
__asm
{
MOV EAX, -1
MOV EBX, pbData
OR EBX, EBX
JZ _Done
MOV ECX, nSize//此处不支持64位
OR ECX, ECX
JZ _Done
_NextByte:
MOV DL, [EBX]
XOR DL, AL
MOVZX EDX, DL
SHR EAX, 8
XOR EAX, [dwCRC32Table + EDX*4]
INC EBX
LOOP _NextByte
_Done:
NOT EAX
MOV RetValue, EAX
}
}
作者: kfrght 发布时间: 2010-12-06
作者: zara 发布时间: 2010-12-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28