MASM代码转换到AT&T
文章利用编译器,避免了写机器码来实现thunk,但汇编部分是MASM。
我移植到MinGW下运行。
这是汇编部分的关键代码:
void ThunkTemplate(DWORD& addr1,DWORD& addr2,int calltype=0)
{
int flag = 0;
DWORD x1,x2;
if(flag)
{
__asm //__thiscall
{
thiscall_1: mov ecx,-1; //-1占位符,运行时将被替换为this指针.
mov eax,-2; //-2占位符,运行时将被替换为CTimer::CallBcak的地址.
jmp eax;
thiscall_2: ;
}
__asm //__stdcall
{
stdcall_1: push dword ptr [esp] ; //保存(复制)返回地址到当前栈中
mov dword ptr [esp+4], -1 ; //将this指针送入栈中,即原来的返回地址处
mov eax, -2;
jmp eax ; //跳转至目标消息处理函数(类成员函数)
stdcall_2: ;
}
}
if(calltype==0)//this_call
{
__asm
{
mov x1,offset thiscall_1; //取 Thunk代码段 的地址范围.
mov x2,offset thiscall_2 ;
}
}
else
{
__asm
{
mov x1,offset stdcall_1;
mov x2,offset stdcall_2 ;
}
}
addr1 = x1;
addr2 = x2;
}
能否帮忙转换成AT&T汇编代码?希望能在MinGW下调试通过!
我尝试改写,但失败。如果调试通过,请将调试后源码发送到:loaden (@) gmail dot com (烦请替换一下)
多谢!只懂C/C++,只懂一点8086汇编的新手恳请帮助...
相关推荐
易语言转换到masm代码源码
易语言转换到masm代码源码。@易语言在线学习。
MASM实时彩色内存时钟课程设计项目
汇编语言是一种低级编程语言,它与计算机硬件架构紧密相关,使用符号指令代替了0和1的二进制编码。汇编语言以助记符的形式直接控制硬件,因此在性能要求极高的场景中,如操作系统核心、嵌入式系统和系统驱动等,汇编语言仍然是不可或缺的工具。获取和显示系统时间是编程中的一个常见需求。不同的操作系统提供了不同的API来获取系统时间。在Windows环境下,我们主要通过Win32 API来实现这一功能。Win32 API提供了一系列用于处理系统时间的函数,比如和等,它们可以帮助我们获取和设置系统的本地时间。
手把手教你配置DosBox挂载MASM:从环境搭建到写出第一个“Hello, Assembly”
本文详细指导如何配置DosBox挂载MASM环境,从安装到编写第一个'Hello, Assembly'程序。涵盖DosBox安装、MASM目录规划、mount命令详解、汇编代码编写及编译链接过程,帮助初学者快速掌握x86汇编语言开发。
Win10/Win11系统下,用DosBox+Masm6.15写汇编,这几个路径和权限的坑我帮你踩过了
结果在Win11系统上折腾了整整两天,遇到了各种路径报错、权限问题和防病毒软件拦截。如果你也在现代Windows系统上尝试搭建这个"复古"开发环境,这篇实战避坑指南能帮你节省大量时间。大多数教程会告诉你"选择任意目录",但现代Windows系统的权限机制和路径处理方式已经发生了巨大变化。提示:即使在英文系统下,也建议路径总长度不要超过30个字符,避免DOS环境下的8.3文件名限制导致问题。原始教程的配置在Win10/11上可能导致路径映射失败。默认的640x480分辨率在现代显示器上简直是折磨。
汇编工具(dosbox、masm、masm for windows)
汇编工具(dosbox、masm、masm for windows)


