news 2026/4/16 18:14:42

【韩公子的Linux大集市】C语言 1.5 【思维实验】理解“程序即指令序列“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【韩公子的Linux大集市】C语言 1.5 【思维实验】理解“程序即指令序列“

文章目录

  • 【思维实验】理解"程序即指令序列"
    • 1. 核心思想
    • 2. 思维实验:手工模拟CPU
      • 2.1 简单的"纸笔计算机"
      • 2.2 指令集设计
    • 3. 手算程序:计算 1+2+3+4+5
      • 3.1 内存初始化
      • 3.2 指令序列(程序)
      • 3.3 手工执行跟踪
    • 4. 从机器指令到高级语言
      • 4.1 机器指令 → 汇编语言
      • 4.2 汇编语言 → C语言
    • 5. 深入理解:冯·诺依曼体系结构
      • 5.1 五大组成部分
      • 5.2 指令执行周期
    • 6. 思维扩展:程序的不同层次
      • 6.1 抽象层次金字塔
      • 6.2 同一问题的不同表示
    • 7. 重要启示
      • 7.1 计算本质
      • 7.2 程序设计的核心
      • 7.3 从C语言到机器指令
    • 8. 实践练习
      • 8.1 思维实验1:最大公约数
      • 8.2 思维实验2:排序三个数
      • 8.3 思考题
    • 9. 现实意义
      • 9.1 理解程序效率
      • 9.2 调试的底层视角
      • 9.3 计算机的局限性
    • 10. 总结

【思维实验】理解"程序即指令序列"

1. 核心思想

“程序即指令序列”是计算机科学中最基本的思想之一:

  • 程序是按顺序执行的指令集合
  • 每条指令都很简单,但组合起来能完成复杂任务
  • 计算机只是忠实地、机械地执行这些指令

2. 思维实验:手工模拟CPU

2.1 简单的"纸笔计算机"

假设我们有一个极简的计算机,只有:

  • 4个寄存器:R0, R1, R2, R3
  • 8个内存单元:地址0-7
  • 简单的指令集

2.2 指令集设计

指令含义示例
LOAD R, addr从内存加载到寄存器LOAD R0, 5
STORE R, addr从寄存器存储到内存STORE R0, 6
ADD R1, R2, R3R1 = R2 + R3ADD R0, R1, R2
SUB R1, R2, R3R1 = R2 - R3SUB R0, R1, R2
JUMP addr跳转到地址JUMP 3
JUMP_IF_ZERO R, addr如果R=0则跳转JUMP_IF_ZERO R0, 5

3. 手算程序:计算 1+2+3+4+5

3.1 内存初始化

地址 | 值 | 说明 -----|------|------ 0 | 1 | 常数1 1 | 2 | 常数2 2 | 3 | 常数3 3 | 4 | 常数4 4 | 5 | 常数5 5 | 0 | 累加和(初始为0) 6 | 1 | 循环计数器(初始为1) 7 | 6 | 循环上限

3.2 指令序列(程序)

地址 | 指令 | 解释 -----|-------------------|---------------------- 0 | LOAD R0, 5 | R0 = 累加和(0) 1 | LOAD R1, 6 | R1 = 计数器(1) 2 | LOAD R2, 7 | R2 = 上限(6) 3 | SUB R3, R1, R2 | R3 = R1 - R2 4 | JUMP_IF_ZERO R3, 12 | 如果R3=0(计数达到上限)跳转到12 5 | LOAD R3, R1 | R3 = 内存[R1](获取当前数) 6 | ADD R0, R0, R3 | R0 = R0 + R3(累加) 7 | ADD R1, R1, 1 | R1 = R1 + 1(计数器加1) 8 | JUMP 3 | 跳回第3条指令 9 | STORE R0, 5 | 存储结果 10 | HALT | 停止

3.3 手工执行跟踪

执行过程:

步骤当前指令寄存器状态 (R0,R1,R2,R3)内存[5]说明
1LOAD R0,5(0,?,?,?)0R0=0
2LOAD R1,6(0,1,?,?)0R1=1
3LOAD R2,7(0,1,6,?)0R2=6
4SUB R3,R1,R2(0,1,6,-5)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:16:15

自制基于 Simulink 的 8 阶 LMS 自适应滤波器模型:从原理到降噪实践

基于simulink的8阶lms自适应滤波器模型,纯手搭 非软件自带lms库,图示为降噪效果。 第一行为加噪信号; 第二行为滤波器输出; 第三行为降噪结果。 可广泛应用于数字域噪声抵消的原型验证,具有参考和再次开发价值。 提供原…

作者头像 李华
网站建设 2026/4/16 10:18:12

大模型面试全记录:小白程序员必看,收藏这份高薪Offer秘籍!

本文记录了作者在2025年3月前后面试多家大模型相关公司的经历,包括智元机器人、面壁科技、光年之外等。作者分享了面试中的技术问题,如Transformer、大模型训练、框架等,并总结了高频考点,如多头注意力、BERT、GPT等。文章还探讨了…

作者头像 李华
网站建设 2026/4/15 14:15:18

论文省心了!9个降AIGC软件测评:本科生降AI率必备工具推荐

在如今的学术写作中,AI生成内容(AIGC)已成为不可忽视的一部分。无论是论文初稿还是最终定稿,许多学生都面临着一个共同难题:如何有效降低AI痕迹,避免被查重系统判定为“AI生成”。随着各大高校对论文原创性…

作者头像 李华
网站建设 2026/4/16 10:17:16

深度解析 CANN ATC AOE:模型编译与自动调优的工程化实践

在大模型推理从"技术验证"走向"生产部署"的过程中,模型编译优化已成为决定性能天花板的关键环节。当 PyTorch 或 TensorFlow 的模型文件(.pt 或 .pb)遇到昇腾 NPU 时,需要经历复杂的格式转换、算子映射、内存…

作者头像 李华
网站建设 2026/4/16 10:14:35

ubuntu安装uwsgi

# Install current stable version. python -m pip install uwsgi# Or install LTS (long term support). python -m pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz

作者头像 李华
网站建设 2026/4/16 10:18:39

CANN加速图神经网络GNN推理:消息传递与聚合优化

图神经网络(Graph Neural Networks,GNN)是一种处理图结构数据的深度学习模型,能够有效学习节点和图的表示。GNN在社交网络分析、推荐系统、分子性质预测、知识图谱等领域有着广泛的应用。GNN推理的核心是消息传递和特征聚合&#…

作者头像 李华