seh构建易语言的try..except

.版本 2
.支持库 spec

.子程序 子程序_模拟try原生态代码有异常, , , 子程序_模拟try原生态代码有异常 (0, 0, 0)
.参数 参数一
.参数 参数二
.参数 参数三
.局部变量 局_变量一, 整数型

参数一 = 1
参数二 = 2
参数三 = 3
局_变量一 = 6
' _asm{
' pushad
' call my

' my:
' pop eax ;自定位
' lea ecx, dword [eax-6+safe]
' push ecx
' lea ecx,dword [eax-6+handle]
' push ecx
' push dword  [fs:0]
' mov  dword  [fs:0], esp


' jmp bottom

' handle:
' pushad

' mov edi,[ebp+10h]
' mov eax,[ebp+0ch]

' push dword [eax+8h]
' pop dword [edi+0B8h]

' popad
' mov eax,0
' ret 10h

' safe:
' mov esp, dword  [fs:0]
' pop dword  [fs:0]
' add esp,08h
' popad
' mov esp,ebp
' pop ebp
' ret 0ch

' bottom:
' }

置入代码 ({ 96, 232, 0, 0, 0, 0, 88, 141, 72, 50, 81, 141, 72, 25, 81, 100, 255, 53, 0, 0, 0, 0, 100, 137, 37, 0, 0, 0, 0, 235, 49, 96, 139, 125, 16, 139, 69, 12, 255, 112, 8, 143, 135, 184, 0, 0, 0, 97, 184, 0, 0, 0, 0, 194, 16, 0, 100, 139, 37, 0, 0, 0, 0, 100, 143, 5, 0, 0, 0, 0, 131, 196, 8, 97, 137, 236, 93, 194, 12, 0 })

调试输出 (“参数一是” + 到文本 (参数一))
调试输出 (“参数二是” + 到文本 (参数二))
调试输出 (“参数三是” + 到文本 (参数三))
局_变量一 = 局_变量一 + 4
调试输出 (“局_变量一是” + 到文本 (局_变量一))
写到内存 (4, 0, 1)
' 这里写代码, 之后堆栈平衡用易语言子程序自带的头 尾

.子程序 子程序_模拟try原生态代码无异常, , , 子程序_模拟try原生态代码无异常 (0, 0, 0)
.参数 参数一
.参数 参数二
.参数 参数三
.局部变量 局_变量一, 整数型

参数一 = 1
参数二 = 2
参数三 = 3
局_变量一 = 6
' _asm{
' pushad
' call my

' my:
' pop eax ;自定位
' lea ecx, dword [eax-6+safe]
' push ecx
' lea ecx,dword [eax-6+handle]
' push ecx
' push dword  [fs:0]
' mov  dword  [fs:0], esp


' jmp bottom

' handle:
' pushad

' mov edi,[ebp+10h]
' mov eax,[ebp+0ch]

' push dword [eax+8h]
' pop dword [edi+0B8h]

' popad
' mov eax,0
' ret 10h

' safe:
' mov esp, dword  [fs:0]
' pop dword  [fs:0]
' add esp,08h
' popad
' mov esp,ebp
' pop ebp
' ret 0ch

' bottom:
' }

置入代码 ({ 96, 232, 0, 0, 0, 0, 88, 141, 72, 50, 81, 141, 72, 25, 81, 100, 255, 53, 0, 0, 0, 0, 100, 137, 37, 0, 0, 0, 0, 235, 49, 96, 139, 125, 16, 139, 69, 12, 255, 112, 8, 143, 135, 184, 0, 0, 0, 97, 184, 0, 0, 0, 0, 194, 16, 0, 100, 139, 37, 0, 0, 0, 0, 100, 143, 5, 0, 0, 0, 0, 131, 196, 8, 97, 137, 236, 93, 194, 12, 0 })

调试输出 (“参数一是” + 到文本 (参数一))
调试输出 (“参数二是” + 到文本 (参数二))
调试输出 (“参数三是” + 到文本 (参数三))
局_变量一 = 局_变量一 + 4
调试输出 (“局_变量一是” + 到文本 (局_变量一))
' 这里写代码, 之后堆栈平衡用易语言子程序自带的头 尾

 

分享到:
赞(0)