高分求助 mmx汇编帮我看下一段小代码。

吴双1983 2007-11-01 05:07:36

dword wordval;
int get_svalue(BYTE k)
// k>0 always
// Takes k bits out of the BIT stream (wordval), and makes them a signed value
{
_asm {
xor ecx, ecx
mov cl,k
mov eax,[wordval]
shl eax,cl
shr eax, 16
dec cl
bt eax,ecx
jc end_macro
signed_value:inc cl
mov ebx,[start_neg_pow2]
add ax,word ptr [ebx+ecx*2]
end_macro:
}
}帮我看下这段代码什么意思。谢谢(最好帮我翻译成c写的代码)
...全文
160 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JUST_QB 2010-12-08
  • 打赏
  • 举报
回复
DWORD x=k;
DWORD eax_bitx;
DWORD *p;
DWORD eax=wordval;
SWORD return_num;
//eax=eax|0xffff0000;
eax=eax<<x;
eax=eax>>16;
x=x-1;
eax_bitx=eax>>x;
eax_bitx=eax_bitx&0x0000000f;
if(eax_bitx==0)
{
x++;
p=(WORD*)start_neg_pow2;
x=x*2;
p=(char*)p+x;
//p=(WORD*)start_neg_pow2+x;
eax=eax&0x0000ffff;
eax=eax+*p;
eax=eax<<16;
eax=eax>>16;
}
return eax;

这个代码 我已经测试通过
iblold 2008-01-31
  • 打赏
  • 举报
回复
SWORD get_svalue(BYTE k)
{
unsigned long ret = wordval, idx = k;

ret = ret << idx;
ret = ret >> 16;
idx--;

if (!(ret & (1<<idx)))
{
idx++;
ret += *((WORD*)(start_neg_pow2+(idx<<1)));
}
return ret;
}

jpg解码里的代码吧,呵呵
我也遇到了这个问题,想把这个解码器用到pocket pc上
结果被这些汇编代码拦住了,已经搞定了
Yofoo 2007-11-03
  • 打赏
  • 举报
回复
mov ebx,[start_neg_pow2]
->
两个可能
ebx = start_neg_pow2;
或者 ebx = *(DWORD *)start_neg_pow2;
吴双1983 2007-11-02
  • 打赏
  • 举报
回复
start_neg_pow2 为 dword 类型。 运行了下,和汇编的效果不一样哟。
应该是翻译的有点问题。昨天自己翻译了几段都是比较简单的。还好自己能搞定。现在的就有点麻烦。自己也很少弄着。呵呵。
vcPlayer 2007-11-02
  • 打赏
  • 举报
回复
char* p = &start_neg_pow2; 中&start_neg_pow2 那里来的哟

下面这句来的:[]在汇编中表示间接寻址,即地址值等于[]中的值(若为寄存器则为寄存器之值)!
mov ebx,[start_neg_pow2]
guo_wei 2007-11-02
  • 打赏
  • 举报
回复
在这个函数外面找吧,应该是个全局变量
吴双1983 2007-11-02
  • 打赏
  • 举报
回复
谢谢
char* p = &start_neg_pow2; 中&start_neg_pow2 那里来的哟
Yofoo 2007-11-01
  • 打赏
  • 举报
回复
bt eax,ecx -> if (k % nRet != 0)
这句转换有误, 应该是
if(nRet & (1<<k))
guo_wei 2007-11-01
  • 打赏
  • 举报
回复
DWORD wordval;
int get_svalue(BYTE k)
{
int nRet = wordval;
nRet <<= k;
nRet >>= 16;
k--;
char* p = &start_neg_pow2;
if (k % nRet != 0)
nRet += *(p+k*2);
return nRet;
}

完全忘了汇编了,好长时间不碰了,哈哈哈,上面写的别信。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧