通用计算机

通用计算机又称为存储程序式计算机。什么是程序,程序是一个由许多指令构成的东西。那么存储程序式计算机也可以认为是存储指令式计算机。

什么是指令呢?指令是我们人类定义的计算机操作行为。在定义指令时需要先定义具体指令的行为。一般可以将指令分为数据传输指令,算术/逻辑操作指令,比较指令,跳转指令,函数调用/返回指令。在定义计算机需要的每条指令后,就要为每条指令编码。用0/1串编码指令。有了计算机的指令后,也就是0/1串,就可以用各种逻辑门组合出可以执行这些0/1串对应的指令的控制器和运算器。也就是说控制器和运算器作为计算的的基本部件来运行指令。

既然是存储程序式计算机,必然需要存储指令的部件,而这个部件就是内存。内存里不仅保存了指令还有数据。上面说了指令编码为0/1串,也就是二进制数字。而数字也是使用二进制的。二进制的运算与十进制运算是相同的。而内存即存储器也成为了计算机的基本部件。

计算机从外部存储设备中将程序装入内存中,cpu指向内存的第一条指令然后开始一条一条执行。

控制器,运算器,存储器,输入设备,输出设备构成了通用计算机的五大部件。

以下是x86CPU执行的指令。

.text
.global max

max:
    pushl %ebp
    movl %esp,%ebp
    
    movl 8(%ebp),%eax
    cmpl 12(%ebp),%eax
    jge .L1
    movl 12(%ebp),%eax
.L1:
    leave
    ret

从机器指令的角度看x86计算机是这样的,运算器和控制器组成的cpu我能看到的是eax,ebx,ecx,edx,esi,edi,ebp,esp这8个寄存器,标志位寄存器ZF,SF,OF,CF,PC指针寄存器。存储器。

计算机各种指令都用到上面的可见部件。

x86也有一系列对应的指令集,指令集有自己的编码。

movb $1,-1(%ebp)
movw $1,-2(%ebp)
movl $1,-4(%ebp)
movsbl -1(%ebp),%eax
movswl -2(%ebp),%eax
movzbl -1(%ebp),%eax
movzwl -2(%ebp),%eax
pushl -4(%ebp)
popl -4(%ebp)
addl $4,-4(%ebp)
subl $4,-4(%ebp)
imull $4,-4(%ebp)
neg -4(%ebp)
andl $4,-4(%ebp)
orl $4,-4(%ebp)
xorl $4,-4(%ebp)
notl -4(%ebp)
cmpl %eax,-4(%ebp)
testl %eax,-4(%ebp)
je .L1
jne .L1
jl .L1
jle .L1
jg .L1
jge .L1
ja .L1
jae .L1
jb .L1
jbe .L1
call printf
ret
leave

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值