首页
社区
课程
招聘
[讨论]学 x86 汇编
发表于: 2009-5-8 16:47 14658

[讨论]学 x86 汇编

mik 活跃值
4
2009-5-8 16:47
14658
去学习和专研所谓 windows 下32位汇编,偶是很不认同这种学习途径
只会令自已陷入学习的误区

学习 x86 & x64 汇编最正确最有效的是:好好地研读 Intel / AMD 的手册,包括系统编程与指令手册,就算再难看也要看入眼,总比花时间在所谓的 masm32 编程强多了。

二是好好了解 ABI,将c语言的函数反汇编来观察,看多了自然就了解了。

要用 masm32 来写程序,为什么不用 C ?????

windows 32汇编编程只不过是披着汇编的C。搞不明白这么多人热衷于 windows 下 masm32编程。罗云彬啊害人不浅

不认可我看法的,别拍我,你要陷入误区,继续陷。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (38)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
masm32只是一个windows下的汇编开发包
一个会使用它来编程的人,当然已经掌握了他所使用指令的用法。
不明白这帖的含义
2009-5-8 16:53
0
雪    币: 205
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
汇编就是汇编,靠近底层的才叫汇编,Win32汇编是相当于高级语言的东东,学了没什么用。
2009-5-8 17:23
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
能不能靠近底层取决于你自己,不取决于汇编
2009-5-8 17:36
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不懂,我就看一看。。
2009-5-8 17:38
0
雪    币: 104
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
同意楼上的,看你怎么看32位下的汇编了,如果仅仅想从事逆向,那么还是了解底层的东西,但是你不一定能用汇编作出来东西,总之,32位下的汇编不是用来学习逆向的,而是使你的软件跑起来更快些,更有潜力,可否这样认为?
2009-5-8 17:39
0
雪    币: 949
活跃值: (18)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
7
这两天我在看罗云山的32位汇编,也有这样的体会...实际上就是换了语法调用api...
而且要说执行效率,我看C写的不一定就没有mas32的效率高......
2009-5-8 21:08
0
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
因人而异,同一种功能不同人写的效率千差万别。
2009-5-8 21:21
0
雪    币: 357
活跃值: (3453)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
9
逆向不学汇编怎么搞
2009-5-8 22:05
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
10
我大致理解MIK的意思是说学习底层CPU的知识,直接看指令手册比较好。
至于MASM32只是编程工具。学习用它编程倒不如用C或其他的语言。

不过指令手册英文版的实在是很累

至于MIK的前面有一个系列的教学文章怎么就这样停了啊?MIK继续写啊..
2009-5-9 09:16
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
直觉告诉我mik是大牛
2009-5-9 09:54
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
2009-5-9 15:25
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
用 masm32 套件写 windows 汇编程序,完全没有价值。

_MoveMouse proc hwnd,wParam,lParam
  local @szPos [128]:byte
  local @stPoint:POINT
  local @stRect:RECT
  
  invoke GetCursorPos,addr @stPoint            ;获得当前鼠标屏幕坐标位置
  invoke ScreenToClient,hwnd,addr @stPoint          ;将鼠标的屏幕坐标位位置转换成当前窗口内的坐标位置
  invoke wsprintf,addr @szPos,offset szMsg,@stPoint.x,@stPoint.y        
  invoke SetWindowText,hwnd,addr @szPos
  mov eax,wParam
  .if eax == VK_LEFT
    sub @stPoint.x,1
  .elseif eax == VK_RIGHT
    add @stPoint.x,1
  .elseif eax == VK_UP
    sub @stPoint.y,1
  .elseif eax == VK_DOWN
    add @stPoint.y,1
  .elseif eax == VK_SPACE
    mov eax,@stPoint.y
    shl eax,16
    add eax,@stPoint.x
    invoke PostMessage,hwnd,WM_LBUTTONDOWN,MK_LBUTTON,eax
    invoke PostMessage,hwnd,WM_LBUTTONUP,0,eax
  .endif
  invoke ClientToScreen,hwnd,addr @stPoint          ;将当前窗口坐标位置转换成屏幕位置
  invoke SetCursorPos,@stPoint.x,@stPoint.y          ;设置光标位置
  ret  
_MoveMouse endp


和以下代码有什么区别? 能证明比以下的要更优秀,更让人明白?

_MoveMouse(HWND hwnd, DWORD wParam, DWORD lParam)
{
        byte szPos[128];
        POINT stPoint;
        RECT stRect;

        GetCursorPos(&stPoint);
        ScreenToClient(hwnd, &stPoint);
        wsprintf(&szPos, &szMsg, stPoint.x, stPoint.y);
        SetWindowText(hwnd, &szPos);

        switch(wParam) {
        case VK_LEFT:
       ... ...
        case VK_RIGHT:
              ... ...
        case VK_UP:
              ... ...
        case VK_DOWN:
              ... ...
        case VK_SPACE:
              ... ...
        }
        ClientToScreen(hwnd, &stPoint);
        SetCursorPos(stPoint.x, stPoint.y);
}


只不过是用了汇编语法元素,却是用 C 语言的思维。 明摆着是自欺欺人

能证明那段高级的汇编码比 C 代码比有效率吗? 

能证明那段高级的汇编码比 C 代码看起来更有技术含量吗?

真正的汇编代码是要用汇编思维的,而不是简单采取“披着汇编的 C ”这种做法。
2009-5-9 15:40
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
14
[QUOTE=mik;620659]完整的在这里:http://linux.chinaunix.net/bbs/thread-1050480-2-1.html[/QUOTE]

你把它搬过来吧。

我又很久没有去CU了。最近比较烦,比较烦.....
2009-5-9 17:59
0
雪    币: 949
活跃值: (18)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
15
[QUOTE=mik;620665]用 masm32 套件写 windows 汇编程序,完全没有价值。

_MoveMouse proc hwnd,wParam,lParam
  local @szPos [128]:byte
  local @stPoint:POINT
  local @stRect:RECT
  
...[/QUOTE]

mik这个代码是我做笔记自己写的...我说看着函数名眼熟。
事实上我是先用C写,然后再用汇编写个用于熟悉汇编的语法。

可别把我的拙劣代码当成书上的例子了。
2009-5-9 18:07
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
比用c的要小的多。编程思想没有c和汇编java的区分
2009-5-31 22:26
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
你不用高级语法就行了!!!!
2009-5-31 22:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
编程的思想都应该是一样的。
只有精通了一个,其余的最多2个月可以搞定。
2009-6-6 11:44
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
19
事物存在就必定有它存在的道理, masm32也一样.
2009-6-6 11:50
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
工具和语言 因人而异找到适合自己的是最重要的
2009-6-7 15:37
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
看那个语言适合自己 就学习那个
2009-6-7 21:03
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
复习一下~~~
2009-6-18 06:45
0
雪    币: 262
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
被楼主这么一说偶又忐忑了。
细细想来,最牛的不一定适合自己,至少可以接近汇编吧。
2009-6-18 08:11
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习中,暂时还没开始研究
2009-6-20 22:32
0
雪    币: 2307
活跃值: (1013)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
25
看了LZ的帖,我有点想郁闷了,自己学习编程的大部分时间都花在WIN32汇编上,当然,写的程序也是从其它语言转过来的,说起来也说是其它语言的汇编版,不过生成的程序要小一半以上。
  学了这么久,WIN32汇编也摸出了一点感觉,有些代码用它真不合适,比如FDSET这个宏,用汇编来写妈呀,好烦!我也是用C写了后反汇编看的。有时候觉得用它写程序有点舍近求远的味道
2009-6-21 18:45
0
游客
登录 | 注册 方可回帖
返回
//