St.Dix的日记本

Hey! I am St.Dix, 3DGameProgramer, thankyou.

C++博客 首页 新随笔 联系 聚合 管理
  10 Posts :: 1 Stories :: 0 Comments :: 0 Trackbacks
今天跟Derek大哥讨论一道题,从一个DWORD里面提取后面三个char值。要求是,不能用汇编。我第一时间想到的是,memcpy()。然而,这仅仅是一个指针就能解决的问题。由于交叉存储,只需:
DWORD m;
char* pm;
pm=(char*)&m;
char a[3];
a[1]=*pm;
a[2]=*(++pm);
pm++;
a[0]=*(++pm);
其实,memcpy只是一个额外的函数调用,内部工作机制是相同的。
 *(char *)dst = *(char *)src;
 dst = (char *)dst + 1;
 src = (char *)src + 1;
这给我了n多的启示,在c++时代,人们都已经习惯了调用别人的函数,很少自己写算法了,这个习惯使我在不用汇编的情况下变得迟钝了很多,远离系统底层。我对内存结构,汇编等等还算是有些了解的,这些不应该不知道啊?!我们离那个底层透明的时代,真的是太远了,汗汗。
posted on 2006-05-11 09:03 St.Dix 阅读(172) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理