程序本质
回忆上次内容
-
他对应着 ascii 字符的代码是(10)10进制
-
他的英文是 LF,意思是Line Feed
-
我们可以在《安徒生童话》中找到每个字符对应的字节形态
-
不光txt文件是文件
-
我们的python游乐场本质上也是一个二进制可执行的文件
-
这个文件在哪?
-
我们可以读懂这个可执行文件吗?????
python3 到底是个啥?
which python3
ll /usr/bin/python3
-
是一个符号链接文件
-
只有9字节
-
他指向 python3.8
直接运行
/usr/bin/python3.8
-
usr 是 unix software resource
-
bin 是二进制 binary
-
python3.8 是这个文件的名称
-
把这个文件从硬盘装载到内存
-
然后用 cpu 开始逐行执行文件中的0101指令
-
可以把他复制到shiyanlou用户的宿主文件夹下吗?
复制
#把/usr/bin/python3这个py文件的解释器拷贝到~(当前用户文件夹)
#cp的意思是copy
cp /usr/bin/python3 ~
#确认python3已经拷到~(当前用户文件夹)
#ls的意思是list
ls ~/python3.8
#查看python3文件细节
ls -lah ~/python3.8
-
python3 指向的 python3.8 只有 5.3M
-
这个可执行文件怎么这么小?
-
5.3M 这也就是一张照片的大小
-
目前这 5.3M 的 Python3 里面到底有什么呢?????
研究 python3
#用vi打开这个刚拷贝过来的python3
vi ~/python3.8
以字节形式观察python3.8
vi ~/python3.8
-
%是指的对于所有行的范围
-
!是执行外部命令
-
xxd指的是转化为 16 进制形式
xxd
-
dump的本意是(倾倒垃圾)
-
这里指的是转储
-
把文件转储为16进制形式汇编代码形式
-
:%!xxd 转成字节形态
-
:%!xxd –r 转回文本形态
另存为python3.8hex
-
cpu能执行的东西
-
真真切切看到了的
-
真的存在硬盘上 01010 的二进制可执行指令!!
-
这些指令执行出来就是我们的游乐场!!!
-
或者说是我们的python虚拟机
-
可是这个指令我们看不懂怎么办?????
-
先把他另存出来
-
:w python3.8hex
-
把当前缓存(buffer)另存(write)为
-
python3.8hex
-
python3.8hex就是我们要的机器语言的字节形态
总结
-
python3 的程序是一个 5.3M 的可执行文件
-
我们通过which命令找到这个python3.8的位置
-
将这个python3.8复制到shiyanlou的用户目录下
-
这个文件还是能够执行的
-
确实可以转化
-
但是这个文件我们看不懂啊!!!????
-
怎么才能看懂这些东西呢?????
-
我们下次再说!????
-
蓝桥->
-
github->
-
gitee->
-
视频-> 作者:oeasy
阅读(461) | 评论(0) | 转发(0) |