
python3 的程序是一个 5.3M 的可执行文件
编辑
真实的cpu

编辑
cpu

编辑
反汇编-汇编语言助记符
#先把~/python3对应的机器语言输出为汇编指令形式(反汇编)
objdump -d python3.8 > python3.8.asm
vi python3.8.asm
编辑
对比
vi -o python3.8hex python3.8.asm
编辑
找到了

编辑
/48 83 找到上下的对应关系查找对应关系
423000 就是初始化(init)的 cpu 开始执行指令的地址
编辑
指令集

编辑
x86-64arm、MIPS、RISC-V 也是常用的指令集回到代码
section 模块initinitialization
编辑
48 83 ec 08查看指令集

编辑

编辑
搜索

编辑
查询x86_64指令集

编辑
逐步搜索

编辑
48 83 ec 08 对应 sub $0x8,%rsp
编辑
更多cpu指令

编辑
移植 port

编辑
不移植

编辑
架构师

编辑
python3 执行过程

编辑
python3 执行的过程大致是这样

编辑
架构的层次

编辑
跨架构跨平台原理

编辑
跨架构跨平台原理
/usr/bin/python3.8 本身是二进制文件
编辑
python3.8 构建了一个运行时环境python语句python语句翻译成系统能读懂输入输出python3 的程序是一个 5.3M 的可执行文件python3 里面全都是 cpu 指令objdump -d ~/python3 > python3.asmuname -a可以查询指令集python3这个可执行文件python3一个参数hello.pypython3对于hello.py一句句的解释执行hello worldpython3执行完毕hello.py的过程
编辑
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。