首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

求教高手,数组转换汇编解决思路

2012-04-25 
求教高手,数组转换汇编C代码如下:static __inline void Convert_8u16s(const BYTE* pSrc, int width, int

求教高手,数组转换汇编
C代码如下:
static __inline void Convert_8u16s(const BYTE* pSrc, int width, int height, short *pDst)
{

int i,j;

for(i = 0; i< height; i++)
for(j = 0; j<width; j++)
{
*(pDst + i*width +j) = (short)(*(pSrc + i*width +j) );
}

}

求教,怎么用汇编高效率实现?(平台是DSP)
还有下面这个语句:
cr = (r >> 1) - ((g >> 2) + (g >> 3) + (g >> 5) + (g >> 7)) - ((b >> 4) + (b >> 6)) + 128;




[解决办法]
前面的三个参数,在调用 Conert_8u16s之前,要先将这几个参数压入.const BYTE* pSrc, int width, int height, short *pDst ... 顺序是相反的. 
Convert_8u16s:
pop ebp
mov ebp, esp
#因为你的函数定义了两个变量.
add esp, 8
mov [ebp+4], # i变量
mov [ebp+8], # j变量

栈的情况如下:
pSrc
width
height
pEst
返回的地址
旧的ebp
下面就是你需要定义的局部变量了.




[解决办法]

探讨
前面的三个参数,在调用 Conert_8u16s之前,要先将这几个参数压入.const BYTE* pSrc, int width, int height, short *pDst ... 顺序是相反的.
Convert_8u16s:
pop ebp
mov ebp, esp
#因为你的函数定义了两个变量.
add esp, 8
mov [ebp+4], # ……

热点排行