通用计算机

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

什么是指令呢?指令是我们人类定义的计算机操作行为。在定义指令时需要先定义具体指令的行为。一般可以将指令分为数据传输指令,算术/逻辑操作指令,比较指令,跳转指令,函数调用/返回指令。在定义计算机需要的每条指令后,就要为每条指令编码。用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

发布了185 篇原创文章 · 获赞 18 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/pk_20140716/article/details/102958201
今日推荐