How Program Works ?

本文深入浅出地介绍了计算机基础知识,包括CPU的工作原理及其重要组成部分,二进制有符号数及补码表示法,IEEE浮点数标准,以及运行环境、BIOS的作用等内容,并通过汇编语言进一步解释了机器代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对程序员来说CPU是什么?

CPU包括寄存器,控制器,运算器和时钟。对于程序员来说,只需要知道CPU是一堆寄存器即可。比较重要的寄存器是程序计数器,基址和变址寄存器,栈寄存器。通过设置程序计数器也就是跳转实现分支和循环。函数调用通过call指令和return指令,包括回到调用位置和函数堆栈销毁。通过基址和变址寄存器索引指定地址的数据。

二进制有符号数?

二进制:逢2进1. 科学记数法的2进制表示,位权和基数的概念。负数表示法->获取补数的方法:取反+1.因为正数和负数相加等于0,所以补数的概念方便计算机把减法当作加法计算,同时保证了逻辑的严谨性。所以8位可以表示的有符号数是,[-2^7, 2^7 -1].有符号数的取值范围是[0,2^8 -1]。负数比正数多一个,因为0算在了正数中,最大的负数是符号位为1,其余位均为0的位表示。左移在左侧补零。算数右移在右侧补符号位,逻辑右移在右侧补0.符号扩充,负数从8位扩展到16位,只需要在前面补符号位即可。所有位全是1的二进制有符号数永远是-1.

计算机表示IEEE浮点数?

二进制标识小数,位权成为2^-1,2^-2…和10进制无法表示1/3一样,二进制无法表示的小数更多,它们其实都是无限循环小数,在计算机有限位数表示时,会有误差。
浮点数包括符号位,尾数,指数和基数四部分组成,基数是2.double有64位,float有32位。分别是符号+指数+尾数 = 1+11+52,1+8+23.
尾数部分采用正则表达式,即按照特性的规则表示数据的形式,除了小数外,字符串和数据库都有自己的正则表达式。这里小数的正则指的是将小数点前面的值固定为1,这样就可以省出1位,提高精度。
指数部分采用EXCESS系统,表示将指数部分表示范围的中间值取为0,使得负数不需要符号位来表示。也就是说,8位指数部分,最大值11111111=255,255/2=127,所以127表示0,11位,11111111111=2047,2047/2=1023,即1023表示0.所以计算出指数部分的值,然后减去127或者1023就可以得到相应的指数部分的数值。

所以单精度浮点数的取值范围: 正数 [2^-23 * 2^-127, 2^128]=[1.4E-45,3.4E+38],负数[-3.4E+38,-1.4E-45]
双精度浮点数的取值范围:正数[2^-52 * 2^-1023, 2^1024]=[4.9E-324, 1.8E+308],负数[-1.8E+308,-4.9E-324]

为了规避浮点数的误差,可以转换为整数后再进行计算。

何为运行环境?

指的是操作系统加硬件,不同的CPU和操作系统需要不同的软件。具体而言,本地代码不同。Windows克服了除CPU之外的其他差别。不同操作系统API不同。

何为BIOS?

Basic Input/Output System,存储在ROM中,负责启动操作系统的程序。

通过汇编语言学习机器代码

汇编语言和本地代码时一一对应的,汇编语言的语法操作码加操作数,操作码也就是助记符,类似于mov,and,push,pop,cal,ret等等。

函数调用机制?

函数的参数通过堆栈来传递,返回值通过寄存器来返回。DATA和BSS段存储全局变量,一个初始化,一个未初始化。

IRQ?

Interrupt Request 中断申请,一般是硬件中断请求。

DMA?

Direct Memory Access,在不通过CPU的前提下,外围设备直接和主存进行数据传送。

文字和图片的显示机制,GPU?

VRAM,Vedio RAM,显示器显示的信息始终在VRAM中。

Reference

程序是怎样跑起来的?

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值