现在还有人学汇编么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
laomutuo
V2EX    程序员

现在还有人学汇编么?

  •  
  •   laomutuo 2015 年 2 月 3 日 20181 次点击
    这是一个创建于 3995 天前的主题,其中的信息可能已经有所发展或是发生改变。

    学了汇编能干啥?
    高级语言都学不过来了,各种框架啥的,这年头还有人学汇编语言么?
    为何学它?

    亲们,给偶个学汇编的理由吧:)

    131 条回复    2015-03-18 10:52:22 +08:00
    1  2  
    way2exluren
        1
    way2exluren  
       2015 年 2 月 3 日 via Android
    写c程序,有时候要内嵌汇编。恶意代码分析的时候要反汇编看汇编代码。还是c有时候bug不好找,会看生成的汇编代码
    codegear
        2
    codegear  
       2015 年 2 月 3 日 via Android
    逆向工程不得不看汇编
    bluecubic
        3
    bluecubic  
       2015 年 2 月 3 日 via iPhone
    年代久远的嵌入式设备
    laomutuo
        4
    laomutuo  
    OP
       2015 年 2 月 3 日
    @codegear 搞逆向的人很少吧?
    Panic
        5
    Panic  
       2015 年 2 月 3 日
    https://www.google.co.jp/search?q=site:v2ex.com/t+%E5%B5%8C%E5%85%A5%E5%BC%8F&qscrl=1&gws_rd=cr,ssl&ei=vhfQVMXlOIjf8AW6toGwCg

    上面的至少 30% 需要汇编把。不过现在汇编应该主要作为一种工具吧, 不到万不得已不会有谁想用的。
    booboo
        6
    booboo  
       2015 年 2 月 3 日
    图像算法优化的时候也是需要汇编的。
    sbboy
        7
    sbboy  
       2015 年 2 月 3 日
    我有一朋友学汇编是为了泡妞
    laomutuo
        8
    laomutuo  
    OP
       2015 年 2 月 3 日
    @sbboy 求妞照片:)
    laomutuo
        9
    laomutuo  
    OP
       2015 年 2 月 3 日   1
    @booboo 用它干啥?
    exch4nge
        10
    exch4nge  
       2015 年 2 月 3 日
    学校学的8位还是16位汇编,学完了搞搞历史悠久的硬件还是可以的,也有助于理解计算机怎么运行的。

    工作上能用到的汇编,除了某些搞硬件的接触(现在大部分都是高级语言了)外,像楼上说的搞逆向工程,病毒分析,漏洞挖掘,还有想把某些代码变高效用内嵌汇编,Debug时看汇编,搞内核方面也用到汇编等等。

    如果对底层没兴趣,也不会在这方面研究或就职,那就不用看了。

    现在各种语言与框架确实很多,但有些经典的语言或框架,你学会了之后即使以后不用,也对你有很大的帮助,多学学无害处。
    exch4nge
        11
    exch4nge  
       2015 年 2 月 3 日
    哦,貌似一些3D渲染中使用的 高级shader 也是用汇编写的。
    zgxltxz
        12
    zgxltxz  
       2015 年 2 月 3 日 via Android
    在学
    ruchee
        13
    ruchee  
       2015 年 2 月 3 日
    在复习中,为的是看懂C/OC的调试信息
    zjgood
        14
    zjgood  
       2015 年 2 月 3 日 via Android
    加密解密要用到。去看雪看看吧
    tabris17
        15
    tabris17  
       2015 年 2 月 3 日
    反编译、crack、调试都需要用到
    Claud
        16
    Claud  
       2015 年 2 月 3 日
    每天都要看汇编的人默默飘过……
    1023400273
        17
    1023400273  
       2015 年 2 月 3 日
    @sbboy 求指导,学汇编如何泡妞
    wizardoz
        18
    wizardoz  
       2015 年 2 月 3 日
    我说学着玩可以吗?其实个人感觉从理念上汇编和C没有太多区别,只不过要自己处理函数栈。
    qq446015875
        19
    qq446015875  
       2015 年 2 月 3 日 via Android
    逆向工程少不了汇编的,还有对时间要求很高的场合,我记得好像dsp就得用汇编吧
    kisshere
        20
    kisshere  
       2015 年 2 月 3 日 via Android
    用电话01键写代码的飘过
    Loop680
        21
    Loop680  
       2015 年 2 月 3 日
    @kisshere 用钢针戳光盘刻代码的笑而不语。
    onemoo
        22
    onemoo  
       2015 年 2 月 3 日
    即便不搞硬件、不搞嵌入式、不写汇编,但在debug C/C++时还是会用到的。
    akin520
        23
    akin520  
       2015 年 2 月 3 日
    必须有呀
    bugeye
        24
    bugeye  
       2015 年 2 月 3 日
    C语言=宏汇编,C语言想学得好,汇编是基础。

    当年MFC那屎一样的框架把我逼得去用汇编写win32 GUI。
    ChiChou
        25
    ChiChou  
       2015 年 2 月 3 日
    @laomutuo 做二进制安全搞逆向的人多了去了
    ryd994
        26
    ryd994  
       2015 年 2 月 3 日
    其实说高性能用汇编也是弊大于利,维护太麻烦了,坑太多。这年头编译器优化太厉害了。
    玩单片机,以前老觉得用汇编可以用一些自己trick,性能会好很多。最近转用C重写,然后看反编译发现和我手动写差不了多少,甚至有些地方的优化我自己都没想到,只能说编译器太牛了。

    但是学一下我还是觉得有好处的,对底层的理解好很多。
    solome
        27
    solome  
       2015 年 2 月 3 日
    看《狂的程序》的候特想重新拾起之前的,最後力持下去哈。。。
    soundofu
        28
    soundofu  
       2015 年 2 月 3 日
    当然需要,基本做嵌入式开发的,写C的,搞深入一点都会要学汇编,很多算法和性能优化时候必须要上汇编。
    crab
        29
    crab  
       2015 年 2 月 3 日
    @solome 作者都蹲进去了。
    fnmsd
        30
    fnmsd  
       2015 年 2 月 3 日
    逆向工程啊~~破解软件啊~
    wdlth
        31
    wdlth  
       2015 年 2 月 3 日
    我搞嵌入式是要学的……
    Neveroldmilk
        32
    Neveroldmilk  
       2015 年 2 月 3 日
    不要说逆向工程了,有些时候发现程序bug,还是要看寄存器和汇编指令的。
    lsmgeb89
        33
    lsmgeb89  
       2015 年 2 月 3 日
    汇编有时候还是需要的,也打算学下。
    special
        34
    special  
       2015 年 2 月 3 日
    学校必修课,要考试。
    laomutuo
        35
    laomutuo  
    OP
       2015 年 2 月 3 日
    @Neveroldmilk 大神能告诉我i3有几个寄存器么:)
    laomutuo
        36
    laomutuo  
    OP
       2015 年 2 月 3 日
    @crab 学汇编,蹲进去啥意思?敲代码还要看姿势?
    laomutuo
        37
    laomutuo  
    OP
       2015 年 2 月 3 日
    @ryd994 你用汇编写过的程序有多少行的?
    duanyu47
        38
    duanyu47  
       2015 年 2 月 3 日
    不学汇编怎么搞破解。。
    pheyer
        39
    pheyer  
       2015 年 2 月 3 日
    @codegear 逆向工程+1
    booboo
        40
    booboo  
       2015 年 2 月 3 日
    图像处理算法热点的地方有时候会反汇编后基于汇编做优化。
    sbboy
        41
    sbboy  
       2015 年 2 月 3 日
    @1023400273 具体我也不了解啊。。。就是有个妹子会汇编,我的朋友想和她有点共同语言。。。
    sbboy
        42
    sbboy  
       2015 年 2 月 3 日
    @laomutuo 我也没见过,只是听朋友说起过。。。
    codegear
        43
    codegear  
       2015 年 2 月 3 日
    @laomutuo 我周围确实没见到做逆向工程的……

    @pheyer 哈哈,现在做逆向的人好少
    nullizer
        44
    nullizer  
       2015 年 2 月 3 日
    一般人学了汇编虽然不容易用上,很容易就忘记细节。但是CS学生不学心里不会踏实的,学了之后至少心里有底,对整个编程生涯都有好处
    laomutuo
        45
    laomutuo  
    OP
       2015 年 2 月 3 日
    @booboo 先用c实现,生成汇编,然后改汇编代码么?
    laomutuo
        46
    laomutuo  
    OP
       2015 年 2 月 3 日
    @pheyer 做逆向,就是搞破解么?从小白变成破解大神,要学多久?
    DingSoung
        47
    DingSoung  
       2015 年 2 月 3 日
    有啊,现在工作经常写汇编
    laomutuo
        48
    laomutuo  
    OP
       2015 年 2 月 3 日
    @dingsoung 知道i3有几个寄存器么?你都学过哪些指令呢?
    pheyer
        49
    pheyer  
       2015 年 2 月 3 日
    @laomutuo 不一定是搞破解啊,有时候就是想偷别人的一点东西,哈哈
    DingSoung
        50
    DingSoung  
       2015 年 2 月 3 日
    @laomutuo 不是X86汇编,是FPGA模拟CPU核的汇编
    caomaocao
        51
    caomaocao  
       2015 年 2 月 3 日
    如果搞嵌入式底层,还是需要的。
    rlexs
        52
    rlexs  
       2015 年 2 月 3 日
    用来做系统开发,很好玩的,汇编应该算是最有趣的语言。
    Bairrfhoinn
        53
    Bairrfhoinn  
       2015 年 2 月 3 日
    貌似汇编语言编写各种硬件的驱动程序也用的不少,什么显卡驱动、声卡驱动、网卡驱动等,都会或多或少用到这门语言……
    jedihy
        54
    jedihy  
       2015 年 2 月 3 日
    尼玛,调试程序不懂汇编调试个蛋?不懂汇编计算机怎么工作的知道个蛋?不懂汇编优化个蛋?不懂汇编的编程,花式码字而已。
    可惜我也只会花式码字。。。
    dagger
        55
    dagger  
       2015 年 2 月 3 日
    即便是不带操作系统的嵌入式,用到汇编的地方也很少了,现在我基本只在bootloader的引导部分和内核里一些需要稍微hack一下的地方才会看到汇编,而且很多指令在内核代码里都会被简单包装成一个c api再拿去用的
    汇编对开发和维护都是噩梦,在现在这个时代还想成气候几乎不可能
    laomutuo
        56
    laomutuo  
    OP
       2015 年 2 月 3 日
    @pheyer 哈哈,用汇编还能偷东西?你是黑客?
    laomutuo
        57
    laomutuo  
    OP
       2015 年 2 月 3 日
    @dingsoung 你是硬件工程师?
    模拟的是什么cpu?
    DingSoung
        58
    DingSoung  
       2015 年 2 月 3 日
    @laomutuo 我只是个写软件的小码农.
    阉割版的51核,做了很多客制化
    scusjs
        59
    scusjs  
       2015 年 2 月 3 日
    @laomutuo 巨汗。。。偷代码、接口啥的啊
    txlty
        60
    txlty  
       2015 年 2 月 3 日
    如果没人学汇编,那么每年那么多 操作系统 和 编程语言 的漏洞,是谁爆出来的?一群老头子?
    soundofu
        61
    soundofu  
       2015 年 2 月 3 日
    @dingsoung 朋友做白电的么?阉割的51做客制化似乎要很大的出货量支持啊!
    DingSoung
        62
    DingSoung  
       2015 年 2 月 3 日
    @soundofu 做烧录器的
    liukun
        63
    liukun  
       2015 年 2 月 3 日
    没有汇编,难道你的CPU认识Java,Python,PHP?所谓编译-汇编-链接,没有人学汇编语言,码农们还怎么玩?
    publicID123
        64
    publicID123  
       2015 年 2 月 3 日
    码农:对汇编一窍不通。只能写脚本级代码。属于行业苦力。
    工程师:能看懂汇编,用于软件调试,维护,性能优化。
    科学家:精通汇编。用于编写操作系统、发明编程语言。
    码农当然是不学的。大部分人也没学过,毕竟苦力是大多数。
    ioth
        65
    ioth  
       2015 年 2 月 3 日
    91年考高程,asm是必须,不知道现在怎么样了。
    easing
        66
    easing  
       2015 年 2 月 3 日
    没想到能扯的人还不少。。。上面说的有几个在这个月碰过汇编?都在说别人,是的,搞逆向搞安全的需要,但你自己需要搞么,是的,搞图形的需要,但现在carmack都不在汇编层优化了,你在搞?搞嵌入式的,我说lz根本不在这一行吧?而且在现在安卓一统天下的时候要学的也不是x86而是smali啊。对于国内80%都在做应用层的码农,搞啥子汇编啊。
    当然汇编还是需要学的,了解计算机在对程序员提供的最基本抽象层有时候是很有帮助的。最好自己实现一个X86的或者一个基于栈的简单虚拟机,都不会超过500行,但我觉得也就仅此而已了。
    youyang
        67
    youyang  
       2015 年 2 月 3 日
    一年前搞crack研究过。
    acros
        68
    acros  
       2015 年 2 月 3 日 via iPhone
    这东西和算法一样,平时上班可能没啥用,关键时刻就能甩别人十条街。
    llb123
        69
    llb123  
       2015 年 2 月 3 日 via Android
    信号与系统要学貌似
    POP
        70
    POP  
       2015 年 2 月 3 日
    学汇编,有妞泡?求介绍!
    acros
        71
    acros  
       2015 年 2 月 3 日
    看这个:
    acros
        72
    acros  
       2015 年 2 月 3 日
    http://blog.codingnow.com/2014/11/rla_format.html#comments
    多一项技能,多了一个解决方案的能力。
    我汇编不行,看到那部分就卡住了
    LovingYoung
        73
    LovingYoung  
       2015 年 2 月 3 日
    上学期刚考完.
    pheyer
        74
    pheyer  
       2015 年 2 月 3 日
    @laomutuo 我偷别人的算法,思路行不?
    andy1987
        75
    andy1987  
       2015 年 2 月 3 日
    有,某些行业离不开汇编,不过现在学的更多的都是win32汇编了,以前at&t,8086的汇编应该学的人相对少了
    andy1987
        76
    andy1987  
       2015 年 2 月 3 日
    学汇编的理由其实很简单,如果你向更深入的了解别人的程序
    像一些做安全软件的底层分析员,汇编都是必备的还有那些一天到晚面对调试器的童鞋们
    laomutuo
        77
    laomutuo  
    OP
       2015 年 2 月 3 日
    @dingsoung 51单片机么?为何要用fpga模拟呢?直接买个51不行?
    51这么弱的处理器不能叫cpu吧?
    laomutuo
        78
    laomutuo  
    OP
       2015 年 2 月 3 日
    @soundofu 白电是啥?为何要把51阉割了?
    @txlty 操作系统漏洞和汇编有啥关系?把操作系统反编译成汇编,一行行读,发现漏洞?
    @publicID123 据我所知操作系统都是用C写的,你说的汇编貌似很少啊,科学家才不用汇编呢,码农用:(科学家用C写10行代码,码农要用汇编写一天呢:)
    @ioth 你现在还用汇编么?
    @youyang 你要crack什么软件?
    @pheyer 给你个windows,你看汇编,能知道windows是怎么实现的么?
    @andy1987 这三种汇编,都要学一遍么?
    commyleung
        79
    commyleung  
       2015 年 2 月 3 日
    有时候我很羡慕程序,可以把自己的IDEA做出来。
    laomutuo
        80
    laomutuo  
    OP
       2015 年 2 月 3 日
    @commyleung idea写java的,和汇编有关系?
    pheyer
        81
    pheyer  
       2015 年 2 月 3 日
    @laomutuo 你这厮明显就是把问题极端化了,我吃饱了撑的去研究windows怎么实现的?够用就行
    pheyer
        82
    pheyer  
       2015 年 2 月 3 日
    @commyleung 就是这样啊,我本来不会做游戏的,可是有idea一直在我的脑海里萦绕,然后就自学游戏开发把游戏做出来了,当然是小游戏了
    xieyudi1990
        83
    xieyudi1990  
       2015 年 2 月 3 日
    大学期间学的汇编:
    8051 HCS12 x86 ARMv7 PIC18 MIPS32
    laomutuo
        84
    laomutuo  
    OP
       2015 年 2 月 3 日
    @pheyer 游戏在哪里?偶瞧下:)
    xieyudi1990
        85
    xieyudi1990  
       2015 年 2 月 3 日
    @dingsoung 为什么要是51呢? MIPS岂不更简单?
    ybh37
        86
    ybh37  
       2015 年 2 月 3 日
    crack、某些驱动需要啃汇编代码。
    不装了,真的不会写,只能看懂简单的,知道怎么改。
    pheyer
        87
    pheyer  
       2015 年 2 月 3 日
    @laomutuo 暂时保密哈哈
    soundofu
        89
    soundofu  
       2015 年 2 月 3 日
    @laomutuo 刚才我说的意思是"白色家电", 价格竞争非常激烈, 由于出货量都是kk级别的, 所以对成本非常在意. 所以靠着量大,甚至可以把51阉割掉一些功能等定制, 以追求0.x元的成本下降.
    laomutuo
        90
    laomutuo  
    OP
       2015 年 2 月 3 日
    @xieyudi1990 mips很复杂的,好伐:) sun不是有服务器cpu用mips做的么?
    DingSoung
        91
    DingSoung  
       2015 年 2 月 3 日
    @laomutuo 不是为了模拟而模拟,是为了控制收发数据,编写协议,自定义接口,而且现有的MCU速度太.
    leavic
        92
    leavic  
       2015 年 2 月 3 日
    做底层不学汇编就是渣
    xieyudi1990
        93
    xieyudi1990  
       2015 年 2 月 3 日
    @laomutuo 指令集, 执行单元, 比51要简单啊. 当然如果你是用别人的IP核那就无所谓了.
    Artotria
        94
    Artotria  
       2015 年 2 月 3 日
    周经帖
    chiu
        95
    chiu  
       2015 年 2 月 3 日
    因为......考试要考
    Neveroldmilk
        96
    Neveroldmilk  
       2015 年 2 月 3 日
    Intel有专门的白皮书介绍每款型号CPU的寄存器和指令集详细支持情况的,不是做底层指令优化的额很多高级指令集和寄存器都用不到,但是可以用来参考。http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
    laomutuo
        97
    laomutuo  
    OP
       2015 年 2 月 3 日
    @xieyudi1990 为何简单执行速度却比51的快很多呢?
    51好像不能跑linux吧?貌似连操作系统都跑不了:(
    可是简单的MIPS为何可以跑Solaris, Linux呢?
    chineselittleboy
        98
    chineselittleboy  
       2015 年 2 月 3 日
    @kisshere 大神你是做什么的~~
    wezzard
        99
    wezzard  
       2015 年 2 月 3 日
    @ioth 看成91年高考了……
    xieyudi1990
        100
    xieyudi1990  
       2015 年 2 月 3 日
    @laomutuo 51本来是35年前为多周期-微码的CISC设计的. 现在只是为了软件兼容性 (一帮人只会51怎么办? 手里只有51的binary怎么办?) 而被ATMega或STC改成了流水线执行.
    RISC指令少而且划分得很规则, 能够很好得适应流水线执行. 近些年新上的嵌入式架构基本都是RISC的.

    你可以把8051的复杂度, 和MIPS或者Cortex-M0之类的复杂度做对比.

    这个, 和能不能跑Linux没有关系. PIC32就是基于MIPS的单片机.
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:21 PVG 12:21 LAX 20:21 JFK 23:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86