打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
x86inc.asm用例
%include "x86inc.asm"
;void exam_1(char *pDst, char *refMain, int width, int deltaInt, int deltaFract, int refMainIndex, int l)
; {
; for (l = 0; l < width; l++)
; {
; refMainIndex = l + deltaInt + 1;
; pDst[l] = (char)(((32 - deltaFract) * refMain[refMainIndex] + deltaFract * refMain[refMainIndex + 1] + 16) >> 5);
; }
;}
;void exam_1(char *pDst, char *refMain, int deltaFract, int deltaInt, int width)
cglobal exam_1_asm, 2,7,0
    mov r2d, r2m
    mov r3d, r3m
    mov r6d, r4m
    lea r1, [r1 + r3 + 1]
    mov r4d, 32
    sub r4d, r2d
    ; ***** register map *****
    ; r0 = pDst
    ; r1 = &refMain[deltaInt + 1]
    ; r2 = deltaFract
    ; r4 = 32 - deltaFract
    ; r6 = width
    ; r3 = FREE
    ; r5 = FREE
.loop:
    movzx r3d, byte [r1]
    imul r3d, r4d ; r3d = (32 - deltaFract) * refMain[refMainIndex]
    inc r1
    movzx r5d, byte [r1] ; r5d = deltaFract * refMain[refMainIndex + 1]
    imul r5d, r2d
    lea r3, [r3 + r5 + 16] ; 可以使用'd'后缀的版本,会增加一字节代码长度
    shr r3d, 5
    mov byte [r0], r3b
    inc r0 ; pDst++
    dec r6d
    jnz .loop
    RET

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
利用伪造内核文件来绕过IceSword的检测
在C\\C++中嵌入汇编
在PC上用并行口模拟I2C总线的C源代码实例
程序中嵌入汇编的实例
Write Bootloader in C – Config9.com
memcpy
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服