下你所需,载你所想!
汇集开发技术源码资料

参照pytorch设计的Etorch深度学习模块源码

:340.413KB :1 :2019-12-01 08:15:04

部分简介

.子程序 内存_读小数型数组_ASM, 逻辑型, , 读取地址 -> 父址+偏移量[1] -> 父址+偏移量[2] -> 父址+偏移量[N] -> 读小数型数组
.参数 读取地址, 整数型
.参数 保存数据, 小数型, 参考 数组
.参数 读取数目, 整数型, 可空, 0=读取保存数据数组成员数目,-1=读到遇{0,0,0,0}返回.指定读取数目 1=4字节
.局部变量 成员数目, 整数型
.局部变量 返回, 逻辑型

成员数目 = 取数组成员数 (保存数据)
.判断开始 (读取数目 = -1)
    读取数目 = 内存_取整数型长度_ASM (读取地址) ÷ 4
.判断 (读取数目 = 0 且 成员数目 > 0)
    读取数目 = 成员数目
    重定义数组 (保存数据, 假, 读取数目)
.默认

.判断结束

.如果真 (读取数目 ≠ 成员数目)
    重定义数组 (保存数据, 假, 读取数目)
.如果真结束
' 004033EB    51              push    ecx                                        ; 备份
' 004033EC    56              push    esi
' 004033ED    57              push    edi
' 004033EE    9C              pushfd                                             ; 备份
' 004033EF    FC              cld                                                ; 顺向
' 004033F0    33F6            xor     esi, esi                                   ; 地址=0
' 004033F2    8775 08         xchg    dword ptr [ebp+8], esi                     ; 交换
' 004033F5    8B7D 0C         mov     edi, dword ptr [ebp+0C]                    ; 参数2
' 004033F8    8B3F            mov     edi, dword ptr [edi]                       ; 数组基址
' 004033FA    8B07            mov     eax, dword ptr [edi]                       ; 维数
' 004033FC    40              inc     eax                                        ; +基维
' 004033FD    6BC0 04         imul    eax, eax, 4                                ; 维*4
' 00403400    03F8            add     edi, eax                                   ; 数据指针
' 00403402    8B4D 10         mov     ecx, dword ptr [ebp+10]                    ; 长度
' 00403405    F3:A5           rep     movs dword ptr es:[edi], dword ptr [esi]   ; 短整传送
' 00403407    FF45 08         inc     dword ptr [ebp+8]                          ; 成功
' 0040340A    9D              popfd                                              ; 恢复
' 0040340B    5F              pop     edi
' 0040340C    5E              pop     esi
' 0040340D    59              pop     ecx                                        ; 恢复
' 51 56 57 9C FC 33 F6 87 75 08 8B 7D 0C 8B 3F 8B 07 40 6B C0 04 03 F8 8B 4D 10 F3 A5 FF 45 08 9D 5F 5E 59
置入代码 ({ 81, 86, 87, 156, 252, 51, 246, 135, 117, 8, 139, 125, 12, 139, 63, 139, 7, 64, 107, 192, 4, 3, 248, 139, 77, 16, 243, 165, 255, 69, 8, 157, 95, 94, 89 })
返回 = 读取地址 ≠ 0
返回 (返回)

.子程序 取指针_小数型数组_ASM, 整数型
.参数 小数型数组变量, 小数型, 参考 数组

' 00401130    8B45 08         mov     eax, dword ptr [ebp+8]           ; EAX=参数1
' 00401133    8B00            mov     eax, dword ptr [eax]             ; EAX=结构基址
' 00401135    50              push    eax                              ; 保存基址
' 00401136    8B00            mov     eax, dword ptr [eax]             ; EAX=维数
' 00401138    6BC0 04         imul    eax, eax, 4                      ; 维数*每维4字节
' 0040113B    83C0 04         add     eax, 4                           ; +维数4字节
' 0040113E    010424          add     dword ptr [esp], eax             ; 基址+数组头维数信息所占的字节数
' 00401141    58              pop     eax                              ; EAX=指针
' 00401142    C9              leave
' 00401143    C2 0400         retn    4
' 8B 45 08 8B 00 50 8B 00 6B C0 04 83 C0 04 01 04 24 58 C9 C2 04 00
置入代码 ({ 139, 69, 8, 139, 0, 80, 139, 0, 107, 192, 4, 131, 192, 4, 1, 4, 36, 88, 201, 194, 4, 0 })
返回 (0)

参照pytorch设计的Etorch深度学习模块源码

热门推荐

相关文章