回归母语

回归母语

其实我也学过不少程序语言了吧,C,Java,Python,Matlab,R等等,但是每一种我都没有学到很精通的地步,一来是因为确实和工作比较远,二来确实自己也还是比较懒。学习时候遇到困难就总喜欢抱怨,这种语言好啰嗦,那种语言好麻烦,这个定义不清晰,那个语法太奇葩之类的,一直幻想有没有一种通用的计算机语言,可以把不同语言转换成一种,这样我们就可以只学一种语言,只要转换成通用语言就可以和其他语言编写的程序一样使用了。可是,你们也知道我的幻想在某种意义上其实并不存在,但是其实你们也知道我的幻想在另外一种意义上其实早就是现实了。有一次在群里聊这个话题,被嘲笑了,大家说你可以去学汇编语言啊,是啊,说起来好尴尬,我真的没有学过汇编语言啊,而且我似乎从来没想过要去学(T_T),我一直以为那就是给计算机读的语言…直到前不久,突然内心膨胀去参加CTF比赛,一头雾水没有做出一道题的情况下,也还是看了看IDA,跟着别人的writeup试着反编译,我才发现其实汇编语言是给人类看的,只有二进制才是真的为计算机定制的语言,然而即便是二进制,人类也是可以看得懂得。

终于发现,其实所有的编程高级语言,不过是汇编语言的抽象化,最终都要翻译成汇编语言的,这么看起来,汇编语言才是编程的母语。既然我的其他语言学得都不好,先把母语学学可能会有帮助吧。

做个小笔记

最近开始看一本有趣的书《30天自制操作系统》,作者是川合秀实,当然我看的是中译本(日语还没有学到可以读书的水平T_T)。书里讲了很多汇编语言的语句,我准备在这里做一个小笔记,把这些语句的意思记录下来,这样下次遇到的时候我就不用到处查了,回来翻翻自己的博客就好啦(有些懒)。下面的这些都是整理自《30天自制操作系统》的内容哦

常见的几个汇编语句及其含义

  1. MOV :move,意思是移动,实质是赋值。源数据和目的数据必须位数相同。
  2. JMP :jump,意思是跳转。
  3. ORG :origin,意思是源头,起点,实质是指定程序开始的地址。
  4. ADD :add,相加
  5. BYTE:使用的存储单元只是地址多指定的字节。
  6. WORD:地址所指定的字节的相邻一个字节也会成为指令的操作对象。
  7. DWORD:与WORD相邻的两个字节都会成为指令的操作对象。
  8. CMP :compare,比较指令
  9. JE :jump if equal, 条件跳转指令,如果比较结果相等就跳转,不等就不跳转
  10. INT : interrupt , 软件中断指令。
  11. HLT :halt,让CPU进入待机状态。
  12. JC :jump if carry,如果进位标志是1就跳转,否则不跳转。
  13. JNC:jump if not carry,如果进位标志是0就跳转,否则不跳转。
  14. JAE :jump if above or equal,大于或等于时跳转,否则不跳转。
  15. JBE :jump if below or equal,小于等于则跳转,否则不跳转。
  16. JB :jump if below,如果小于则跳转
  17. RESB: reverse byte, 预留字节
  18. DW:define word
  19. DD:define double-word
  20. DB:define byte

还有一些常用的寄存器的名称,也很重要的感觉。

8个16位寄存器

  • AX :accumulator,累加寄存器
  • CX :counter, 计数寄存器
  • DX :data,数据寄存器
  • BX :base,基址寄存器
  • SP :stack pointer,栈指针寄存器
  • BP :base pointer,基址指针寄存器
  • SI :source index,源变址寄存器
  • DI :destination index,目的变址寄存器

16位段寄存器

  • ES :extra segment,附加段寄存器
  • CS :code segment,代码段寄存器
  • SS :stack segment,栈段寄存器
  • DS :data segment,数据段寄存器
  • FS :没有名字的段寄存器
  • GS :没有名字的段寄存器

8个8位寄存器

  • AL :累加寄存器低位
  • CL :计数寄存器低位
  • DL :数据寄存器低位
  • BL :基址寄存器低位
  • AH :累加寄存器高位
  • CH :计数寄存器高位
  • DH :数据寄存器高位
  • BH :基址寄存器高位

8个32位寄存器
EAXECXEDXEBXESPEBPESIEDI,这里的E就是Extend的意思,就是在16位寄存器的基础上扩展了的意思

信而美

看完了这些汇编语言,我才发现,其实计算机的语言本质也很简洁啊,比文言文还要简洁啊,如此甚好。之前在看《操作系统之哲学原理》的时候,有一章的引子叫“信言不美,美言不信”,我一时间不理解为什么用这个标题。看完汇编语言之后,我大概有些理解了。那么多的高级语言,看起来很美,但是执行的过程中就会有一些不可靠的情况,而汇编语言,虽然看起来不美,但是执行起来是不大折扣的。

信言不美,美言不信,固然是现实,但是理想主义者的心理总有一种追求,可不可以既信又美呢?如果可以出现一种信而美的语言,是不是可以拯救满是bug的世界呢?(白日梦模式已经开启)

到底是什么导致信言不美,美言不信呢,仔细想想,可能是对美的追求有些不切实际呢,其实《30天自制操作系统》这本书里也有提到,程序写的在漂亮,执行时候出问题也白搭,还不如程序写的容易执行但是看起来不那么漂亮。

就让我从白日梦开始,学习编程吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不争之德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值