HP-Saturn处理器汇编入门 00-处理器架构简介

Saturn处理器是惠普基于其已有NUT处理器改良出来的CISC计算器专用处理器,应用于HP后期大部分计算器机型。有单处理器,处理器+驱动器,SOC等多种封装形式。在NEC停产此系列芯片后HP联合中国台湾金宝(Kinpo)公司开发了基于ARM的"Saturn+"模拟器,与原芯片相比在提高了主频的同时还提供了更多的Saturn机器指令。
从本文开始,我将简略地介绍一下这款处理器及其汇编语言。本意并非鼓励大家使用这款芯片(因为自50G停产后,这个处理器已经被人们彻底的遗忘了,在当今市场的成本考量下,也不太可能会复苏),而是展现其精巧的指令集设计思想,以及这款非常与众不同的处理器十分有趣的使用体验。

HP Saturn是一款架构非常稀奇的处理器,它本身是一个4位处理器,而工作寄存器的大小是64位,寻址寄存器的大小是20位。
工作寄存器一次能保存一个完整的由一个符号位,48个尾数位(12个有效BCD尾数),12个指数位(以二进制补码表示的指数,范围是±499)的64位浮点数,而每次该处理器可以操作其中4位,因此HP给出了“域”的概念:
不同的域指示一个工作寄存器的不同部分,在指令后写出域修饰符,可以指定一个指令执行的范围。

因为以4位为一个操作单位,这款处理器上常用的计数单位是Nibble(亦作nybble,中文大概可以翻译为“半字”),1Nibble=4Bits=0.5Byte,后文简写为“Nib”
本处理器支持BCD操作,即允许使用1Nib表示一个0~9的一个十进制数,这个模式可以算作是针对计算器设计的CPU对数学操作的硬件优化(当然,这个魔法搞出了一堆BUG,在Saturn+上有得到修复所以可以放心使用,然而如果想给早期的机型写程序,可能需要ROM call来调用补丁代码,不是个很好的解决方案qwq。本部分内容在后文有相应解释)

Saturn处理器的数据交换有三个途径:

  1. 通过指针寄存器(可能存在内部换页器)操作内存
  2. 通过OUT/IN寄存器,直接与键盘/扬声器进行数据交换
  3. 通过处理器外部总线与外部设备/内存配置系统等进行数据交换

Leave a Reply

Your email address will not be published. Required fields are marked *