V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pheyer
V2EX  ›  程序员

如果有想学习汇编的,我有个好建议

  •  
  •   pheyer · 2015-02-04 14:58:37 +08:00 · 4739 次点击
    这是一个创建于 3584 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前面看到有人提是否要学习汇编,我觉得还是有点必要的。如果是学生想学习汇编(ARM)的,还想学习游戏开发的,我建议可以这样一试:
    2014年别踩白块儿这个游戏很火,是用cocos2d-x(C++)开发的,游戏本身比较简单。你可以对这个游戏进行逆向,然后复制出一个你自己的别踩白块儿。逆向的方法是结合ida的汇编代码以及F5反编译出来的伪代码进行代码逆向,当然前提是对cocos2d-x的游戏开发的一些基本元素要了解,另一方面,cocos2d-x本身是开源的,你可以在IDA中看到很多明显的api调用,这会减轻逆向的难度。
    感觉有以下几个好处:
    1)掌握IDA的运用
    2)加强对C++的理解
    3)更好地掌握汇编知识
    4)学习了游戏开发
    5)可以兼带学习一下怎么实现去广告破解
    一举多得,这应该比你从课本上学习汇编的更有趣得多。我觉得现在的汇编课就应该这么教,要不然真没意思。
    另外,最好是在自己的博客上做笔记,形成一个系列,找工作的时候亮出来,我相信会有加分的。
    19 条回复    2015-02-05 16:09:53 +08:00
    fyibmsd
        1
    fyibmsd  
       2015-02-04 16:21:27 +08:00
    受教了
    zgxltxz
        2
    zgxltxz  
       2015-02-04 17:53:46 +08:00 via Android
    老啦…学x86的路过
    wzt
        3
    wzt  
       2015-02-04 18:13:07 +08:00
    基本是看intel手册的1-3卷
    pheyer
        4
    pheyer  
    OP
       2015-02-04 18:15:43 +08:00
    @wzt 现在是arm时代了
    yangff
        5
    yangff  
       2015-02-04 18:25:18 +08:00 via Android
    赌5块钱你的ida是盗版的
    pheyer
        6
    pheyer  
    OP
       2015-02-04 18:49:08 +08:00
    @yangff 真心买不起啊
    xieyudi1990
        7
    xieyudi1990  
       2015-02-04 18:57:14 +08:00 via iPhone
    第一次学可以弄本故事书参考下 (比如学校发的教材那种, 讲汇编是同时还讲讲基础, 比如什么是补码啊, 溢出和进位的区别啊, 汇编一般是哪大类操作啦, cisc risc, 是load/store型还是move型, 是gpr型还是累加器型, 等等等等)
    有点底子了直接看instruction set manual
    xieyudi1990
        8
    xieyudi1990  
       2015-02-04 19:03:20 +08:00 via iPhone   ❤️ 1
    @pheyer arm只是商业模式刚好比较适合行业的发展. 实力我看离intel差远了.

    另外指令集那个真无所谓, 常用的就那么几条. 上操作系统吧, 肯定有个kernel mode和user mode; 肯定有个页表; 肯定有个tlb... 这些东西都不会变的, 只是接口不同而已, 是软件实现还是硬件实现. 用哪个cpu翻翻手册就是了.
    xieyudi1990
        9
    xieyudi1990  
       2015-02-04 19:06:12 +08:00 via iPhone
    lz那个不是csapp里的点子吗
    pheyer
        10
    pheyer  
    OP
       2015-02-04 19:09:50 +08:00
    @xieyudi1990 没看过,那上面说的啥?
    Ge4Los
        11
    Ge4Los  
       2015-02-04 19:20:40 +08:00
    只学ARM汇编的话, 直接用ARM开发的IDE会不会更好些.
    像keil , IAR之类的, 编译后单步执行调试. 源码, 汇编代码, 寄存器状态, 堆栈都可以跟踪到. arm指令集毕竟是RISC, 指令就那么几种.
    另外补充下, 我总觉得学arm汇编会点歪技能树. 非andoroid和嵌入式开发基本上都用不上arm汇编
    pheyer
        12
    pheyer  
    OP
       2015-02-04 22:00:38 +08:00
    @Ge4Los 如果不想做移动开发或者工作中根本就接触不到移动开发那就算了吧。如果有可能做移动开发,移动开发的底层基本都是arm,有时候想逆向一下啥的还真用得上汇编。你说的纯粹学汇编,偏理论了一点,有点枯燥,学生可能觉得没啥用处,提不起兴趣,很多课堂上教的东西就属于这种,学生上课上得昏昏欲睡,效果不是很好;我提供了一种一举多得的学习方法,偏实用一些,有具体的目标,一次练手,多方面收获,不更好吗?
    laomutuo
        13
    laomutuo  
       2015-02-05 07:44:58 +08:00
    @pheyer 别踩白块儿是安卓应用? 安卓应用不是用java开发的么?你这里用的c++?
    andy1987
        14
    andy1987  
       2015-02-05 10:42:46 +08:00
    学汇编,在调试技术这块下点功夫很好,如果用应用开发那还是不要太费力的,而且目前win32汇编跟高级语言看起来没什么太多的区别了,不想以前的8086了
    pheyer
        15
    pheyer  
    OP
       2015-02-05 11:24:25 +08:00
    @laomutuo 一看就是没做过游戏的,游戏开发用cocos2d-x可以跨平台,语言就是用c++了
    laomutuo
        16
    laomutuo  
       2015-02-05 14:52:32 +08:00
    @pheyer 额,你做游戏么,亲:)
    pheyer
        17
    pheyer  
    OP
       2015-02-05 15:43:55 +08:00
    @laomutuo 做应用也做游戏,主要是iOS方面的
    laomutuo
        18
    laomutuo  
       2015-02-05 16:04:57 +08:00
    @pheyer 做游戏,听说都是很高薪水,30w+?亲有么,哈哈
    pheyer
        19
    pheyer  
    OP
       2015-02-05 16:09:53 +08:00
    @laomutuo 只是业余时间做一下游戏而已,主要还是做应用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.