社区
汇编语言
帖子详情
在类成员函数嵌入汇编,不能调用成员变量
t30220752
2007-04-26 02:57:53
在类成员函数嵌入汇编,不能调用成员变量
如:
class C
{
public:
char b ;
void fun()
{
__asm{
mov b,0
}
}
};
会提出错.
"不正确的操作数类型"
咋办?
...全文
426
16
打赏
收藏
在类成员函数嵌入汇编,不能调用成员变量
在类成员函数嵌入汇编,不能调用成员变量 如: class C { public: char b ; void fun() { __asm{ mov b,0 } } }; 会提出错. "不正确的操作数类型" 咋办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
日立奔腾浪潮微软松下联想
2007-05-29
打赏
举报
回复
__asm{
mov eax,this
add eax,i
mov edx,1 // 数组下标
mov dword ptr [eax+edx*4],23fah
}
t30220752
2007-05-29
打赏
举报
回复
现在可以总结如下:
采用char/int/void*都可以解决,但如果是用数组,而且用movq指令呢?例如:
class c
{
public:
unsigned int i[10];
void fun2()
{
i[1] = 0x2af3;
}
};
那要如何做?
好像
__asm{
mov eax,this ;
mov dword ptr [i[1]+eax], 0x2af3 ;
}
是不行的。
珍惜生命远离CPP
2007-05-17
打赏
举报
回复
看看编译器是怎么写的.
class test
{
int a;
int *pa;
public:
void Do()
{
00401000 push ebp
00401001 mov ebp,esp
00401003 push ecx
00401004 mov dword ptr [ebp-4],ecx
a=1;
00401007 mov eax,dword ptr [this]
0040100A mov dword ptr [eax],1
pa=0;
00401010 mov ecx,dword ptr [this]
00401013 mov dword ptr [ecx+4],0
}
0040101A mov esp,ebp
0040101C pop ebp
0040101D ret
}
RuoMu
2007-05-16
打赏
举报
回复
mark
日立奔腾浪潮微软松下联想
2007-05-16
打赏
举报
回复
__asm{
mov eax,this
mov byte ptr [eax+b],0
mov dword ptr [eax+lpc],0
mov dword ptr [eax+n],0
}
t30220752
2007-05-15
打赏
举报
回复
那么说就是:
mov eax,this
mov unsigned int ptr [eax+n],0
mov eax,this
mov char * ptr [eax+lpc],0
??
这样子不行哟!真不好意思哟,汇编没学好!还求各位帮帮喽。
日立奔腾浪潮微软松下联想
2007-05-14
打赏
举报
回复
照葫芦画瓢。
t30220752
2007-05-12
打赏
举报
回复
那如果还有unsigned int ,char * lpc两种类型,要怎么做?如:
class C
{
public:
char b ;
unsigned int n ;
unsigned char * lpc ;
void fun()
{
__asm{
mov b,0
mov lpc,0
mov n,0
}
}
};
这样要怎么写?
pig4210
2007-05-03
打赏
举报
回复
同意楼上的说法
日立奔腾浪潮微软松下联想
2007-05-03
打赏
举报
回复
这样才行:
__asm{
mov eax,this
mov byte ptr [eax+b],0
}
ykzhujiang
2007-05-03
打赏
举报
回复
楼上这个写法不对的,b不能表示偏移
combojiang
2007-04-27
打赏
举报
回复
原因是因为类的成员访问都是通过this指针来访问的。
void fun()
{
this->b = 0;
}
不过通常我们在c++中可以不写this,直接b = 0;
但是在汇编中是不能这么写的。汇编中必须以this + 偏移的方式来访问成员变量的。本例中,this和b的地址是一样的。因此可以写成:
mov byte ptr [this],0
combojiang
2007-04-27
打赏
举报
回复
欢迎加入汇编应用群: 33756710
mengshijie_1981
2007-04-27
打赏
举报
回复
总结combojiang(combojiang)的经验,是否最规范的写法应该是:
mov byte ptr [this+b],0
?
ykzhujiang
2007-04-26
打赏
举报
回复
mov byte ptr [this],0
大熊猫侯佩
2007-04-26
打赏
举报
回复
mov byte ptr b,0
我的编程感悟(中文PDF)(共37M二分卷)分卷一
《仙剑奇侠传》之父姚壮宪热情推荐,技术作家孟岩高度评价! 云风也是我在中国最佩服的游戏开发者。看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,保护模式, Assembler 到 C++ 的整个发展轨迹。这本书可以说横跨了游戏程序的过去、现在和未来。 书中传达的不仅是一些实用的技术经验,更是传达一种理念——虽然研发的环境随着时代而变,但研发的精神是不变的,那就是“在实践中积累”。 ——《仙剑奇侠传》之父 姚壮宪 之前我经常奇怪,云风还非常年轻,他程序思想中的那种老练的智慧是从何处得来的呢?读完这本书之后,我终于明白,还是那句话:“无他,唯手熟耳”。 面对这沉甸甸的作品,我确实感到,这是云风用心写的书。用心写的书,当然出色。 ——技术作家 孟岩 我现在是中国并不成熟的游戏制作行业中的一员,游戏给了我太多,我告诉自己需要做一点事情。分享知识和经验是我的义务,别无它。 ——云风 内容简介 本书忠实地记录了作者十余年来对游戏编程的所思、所感、所悟。全书按照作者本人学习和实践的过程,带着读者从基础的计算机知识到高级的编程技术,从非常专业的
汇编
优化到非常实际的项目管理进行了一次游戏开发的全景探索。 本书不仅适合游戏开发者阅读,也会给所有的开发者和程序爱好者带来启示。 作者简介 云风,时年二十七岁。自幼学习编程,十数年从未间断,对程序设计有所领悟。大学时代开发的游戏图像引擎“风魂”曾用于多家游戏公司的游戏项目。参与过《大话西游》系列、《梦幻西游》、《网易泡泡游戏》的开发。现从事新一代网络游戏引擎的研究与开发,并在游戏模式上做一些新的尝试。 性格开朗,兴趣广泛,好交友,绝非沉浸在计算机世界中的书呆子。国学、历史书籍常备案头,以先贤之教诲修其心;休息时常作户外运动,尤其喜爱攀岩。 目录 第1章 计算机,游戏,我 1 1.1 计算机 2 1.2 计算机游戏 3 1.3 计算机与我 7 1.3.1 启蒙 7 1.3.2 编程 9 第2章 算法,程序的灵魂 13 2.1 程序=算法+数据结构 14 2.1.1 算法 15 2.1.2 数据结构 17 2.2 搜索算法 23 2.2.1 地图寻路问题 23 2.2.2 博弈问题 27 2.2.3 更为广泛的运用 28 2.3 智能算法 29 2.3.1 遗传算法(Genetic Algorithm) 29 2.3.2 模拟退火算法(Simulated Annealing) 31 2.3.3 禁忌搜索(Tabu Search) 33 2.3.4 人工神经网络 (Artificial Neural Network) 34 2.4 优化 36 2.4.1 质数问题 36 1.4.2 俄罗斯方块竞赛 37 2.5 Apple II上的编程之路 39 第3章 编程语言 45 3.1 C 语言 46 3.2 BASIC 50 3.3 C++ 51 3.4
汇编
语言 54 3.4.1 概述 55 3.4.2 程序的本质 57 3.4.3 寄存器 58 3.4.4 寻址方式 60 3.4.5
汇编
指令 61 3.4.6 C/C++ 语言和
汇编
62 3.4.7 小结 63 3.5 其他语言 63 3.5.1 Forth 63 3.5.2 Lisp 64 3.5.3 Java 64 3.5.4 Python、Lua、更多 65 第4章 前Windows 时代 67 4.1 386保护模式 68 4.2 VGA 到VESA 70 4.2.1 超越 BGI 70 4.2.2 VGA 72 4.2.3 VESA 标准 72 4.2.4 花絮 74 4.3 保护模式下的开发工具 75 4.4 闲话 Allegro 81 4.4.1 用C与
汇编
写成的程序库 81 4.4.2 BITMAP 82 4.4.3 Sprite 85 4.4.4 几何图形和 3D 89 4.4.5 数据文件 91 4.4.6 声音 92 4.4.7 其他的部分 93 4.4.8 小结 94 4.5 cfido 中国惠多网 94 第5章 Windows 编程 101 5.1 Windows编程入门 104 5.1.1 Windows版本综述 105 5.1.2 操作系统的核心 107 5.1.3 Windows API和DLL 110 5.1.4 COM 111 5.1.5 Windows的窗口和消息处理与传递 114 5.1.6 Windows GDI 125 5.2 控制游戏的速度 130 5.3 浅谈MFC 132 5.4 小结 132 第6章
汇编
优化 135 6.1 浅谈代码优化 138 6.2 并不仅仅是汇
详解函数指针和
类
成员函数
指针
作者:倾夜·陨灭星尘 一.什么是函数指针? 函数指针,顾名思义即指向函数的指针。 如果要问,为什么能用一个指针指向一个函数呢?我觉得要理解这个问题,以及要理解后面的函数指针和
类
成员函数
指针,没有什么比从计算机原理的角度来理解更容易了。这里就简要回顾一下相关知识。 众所周知,计算机(图灵机)执行程序的基本流程就是:取指令->执行指令->取下一条指令->……。取指令的位置由一个寄存器PC决定。
Windows内核-X64
汇编
X64新增的寄存器VS集成64位
汇编
环境64位
汇编
传参问题
汇编
里面
调用
外部函数全局变量定位
使用
类
的
成员函数
作为API定时器的回调函数
有时候,我们在使用API定时器时,需要使用
类
的
成员函数
作为其回调函数,但是,编译器为了保护
成员函数
,编译是
不能
通过的。那么我们怎么才能使用
类
的
成员函数
作为API定时器的回调函数呢?我们可以
嵌入
一段
汇编
代码来绕过编译器的检查。举个例子: 假设我们一个
类
的
成员函数
定义为void CALLBACK EXPORT CTestDlg::TimerProc,那么我们在使用API定时器时如果直接这么写
VS
嵌入
汇编
ASM
1.
嵌入
汇编
语言的格式 C++语言是C语言的超集,它是在C语言的基础上扩展形成的面向对象程序设计语言。微软Visual C++ 5.0∕6.0则是Windows 9.x平台上广泛应用的开发系统。本节以Visual C++ 5.0∕6.0为例,说明32位Windows 9.x环境下
汇编
语言与C++的混合编程。它也分为
嵌入
汇编
和模块
调用
两种方式。 Visual C++直接支持
嵌入
汇编
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章