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

如何学习汇编语言?

  •  
  •   realdvorak · 2023-05-16 13:28:13 +08:00 · 1302 次点击
    这是一个创建于 552 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已经看过了王爽老师的《汇编语言》,讲的很好,但是是用 8086 入门的。想进一步学习,有没有推荐的教材,现在在看《从实模式到保护模式》,这本怎么样?

    7 条回复    2023-05-18 08:56:19 +08:00
    sjkdsfkkfd
        1
    sjkdsfkkfd  
       2023-05-16 16:54:29 +08:00
    https://stackoverflow.com/tags/x86/info

    直接从比较现代的东西看吧,熟悉语法直接去 compiler 上看编译器编译的结果也行

    从头写汇编程序已经没啥用处了,能读懂编译器输出的汇编片段,能写一点 inline assembly 做优化就可以了
    sjkdsfkkfd
        2
    sjkdsfkkfd  
       2023-05-16 16:55:59 +08:00
    @sjkdsfkkfd compiler explorer ,手快没打出来
    secondwtq
        3
    secondwtq  
       2023-05-16 19:39:50 +08:00
    学习任何东西最好的办法是实践,就好像学英语要坚持有效的输入输出
    当然怎么实践有学问,比如学 C#,可以先拿 C# 刷几道 LeetCode 熟悉基本用法,写几个小工具之类的,但是到后面取决于你要做什么,搞 Web 服务,做 Windows 程序开发,做游戏等涉及到的库和知识体系是有很大不同的
    汇编也一样,如果你是想操作硬件那就试着写个 bootloader ,研究开源 OS 中一些 Arch-specific 的设计和实现,做安全就去解 crackme
    我一开始学汇编是想着搞点逆向,后来是研究编程语言语义的实现,再后来是做程序优化,结果都搞了个半吊子,现在 jl je jnz 都分不清楚,但是干活勉强够用
    secondwtq
        4
    secondwtq  
       2023-05-16 19:46:00 +08:00
    另外就是建议不要仅仅停留在 x86 上,可以看看 ARM 之类的,现在资源也丰富起来了,以及一些资料较少,但是也很有意思的较新的架构比如 RISC-V ,甚至是已经淡出主流的架构比如 Alpha ,很多设计上的选择很有启发性(也包括传统 CPU 和其他处理器比如 GPU 的架构设计也有很有趣的区别)
    wafm
        5
    wafm  
       2023-05-16 19:46:07 +08:00
    扫雷,植物大战僵尸

    去逆向分析一下基本也就没问题了
    vangjing
        6
    vangjing  
       2023-05-16 19:52:19 +08:00
    可以参考滴水的逆向课程,B 站搜就有,也可以看这个博客,算是课程的文字版 https://www.cnblogs.com/iBinary/?page=20

    单纯的学汇编意义好像不大,单纯学习汇编的结果大概率能看懂每条汇编干了什么,但是给一段汇编就不知道干啥了,可以结合其他内容,比如操作系统、编程语言之类的。
    zeze0556
        7
    zeze0556  
       2023-05-18 08:56:19 +08:00
    学汇编最快的方式就是破解,逆向
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.