程序实质

回顾上次内容

  • \n 就是换行

    • 他对应着 ascii 字符的代码是(10)10进制
    • 他的英文是 LF,意思是Line Feed
  • 咱们能够在《安徒生童话》中找到每个字符对应的字节状态

  • 不光txt文件是文件
  • 咱们的python游乐场实质上也是一个二进制可执行的文件
  • 这个文件在哪?
  • 咱们能够读懂这个可执行文件吗?

python3 到底是个啥?

which python3ll /usr/bin/python3
  • 这个 python3

    • 是一个符号链接文件
    • 只有9字节
    • 他指向 python3.8
  • python3.8

    • 也在 /usr/bin 外面
  • 就是/usr/bin/python3.8

  • python3.8

    • 是一个5.3M的文件
    • 能够看得见
  • 能够间接运行这个phthon3.8吗?

间接运行

/usr/bin/python3.8
  • python3.8 就在硬盘里呆着

    • 地位就在/usr/bin/python3.8

      • usr 是 unix software resource
      • bin 是二进制 binary
      • python3.8 是这个文件的名称
  • 在运行命令的时候

    • 把这个文件从硬盘装载到内存
    • 而后用 cpu 开始逐行执行文件中的0101指令
  • 能够把他复制到shiyanlou用户的宿主文件夹下吗?

复制

  • 复制到shiyanlou用户文件夹下

    • 再察看
#把/usr/bin/python3这个py文件的解释器拷贝到~(以后用户文件夹)#cp的意思是copycp /usr/bin/python3 ~#确认python3曾经拷到~(以后用户文件夹)#ls的意思是listls ~/python3.8#查看python3文件细节ls -lah ~/python3.8
  • python3 指向的 python3.8 只有 5.3M

    • 这个可执行文件怎么这么小?
    • 5.3M 这也就是一张照片的大小
  • 以前的 Python3.5 只有 4.3M

    • 更小
  • 目前这 5.3M 的 Python3 外面到底有什么呢?

钻研 python3

#用vi关上这个刚拷贝过去的python3vi ~/python3.8
  • 这个样子看起来

    • 全是乱码
    • 齐全看不懂啊

  • 这个货色咱们的确看不懂

以字节模式察看python3.8

vi ~/python3.8
  • 用vim关上~/python3.8

  • :

    • 进入命令行模式
  • :%!xxd咱们能够看到这个文件的二进制状态

    • %是指的对于所有行的范畴
    • !是执行外部命令
    • xxd指的是转化为 16 进制模式
  • 什么是xxd命令呢?

xxd

  • xxd 能够查看文件的二进制状态

    • dump的本意是(倾倒垃圾)
    • 这里指的是转储
    • 把文件转储为16进制模式汇编代码模式

  • :xxd –r 能够还原回去

    • :%!xxd 转成字节状态
    • :%!xxd –r 转回文本状态
  • 重复横跳...

另存为python3.8hex

  • 一行是(16)10 进制 个字节

    • G 到最初一行
    • 总共有 343148 行

  • 这就是 真正的机器语言

    • cpu能执行的货色
    • 真真切切看到了的
    • 真的存在硬盘上 01010 的二进制可执行指令!!
    • 这些指令执行进去就是咱们的游乐场!!!
    • 或者说是咱们的python虚拟机
  • 可是这个指令咱们看不懂怎么办?
  • 先把他另存进去

    • :w python3.8hex
    • 把以后缓存(buffer)另存(write)为
    • python3.8hex
  • 对python3.8强制退出

    • :q!
    • 不保留批改强制退出
  • python3.8hex就是咱们要的机器语言的字节状态

    • 可是这字节状态咱们还是看不懂啊

总结

  • python3 的程序是一个 5.3M 的可执行文件

    • 咱们通过which命令找到这个python3.8的地位
    • 将这个python3.8复制到shiyanlou的用户目录下
    • 这个文件还是可能执行的
  • 将这个文件转化为字节状态

    • 的确能够转化
    • 然而这个文件咱们看不懂啊!!!

  • 怎么才能看懂这些货色呢?
  • 咱们下次再说!
  • 蓝桥->https://www.lanqiao.cn/teache...
  • github->https://github.com/overmind19...
  • gitee->https://gitee.com/overmind198...
  • 视频->https://www.bilibili.com/vide... 作者:oeasy