AIx51虚拟单片机(1):“80151”和“80351”32位单片机指令集简介
一、研制“80x51”指令集的必要性(1)“虚拟计算机”是一种先进的计算机软件技术。“虚拟计算机”在硬件领域是用软件模拟的方法来从理论上预先研究和探讨新的计算机和CPU架构,在软件领域是用新的软件系统来整合现有的硬件系统,从应用层次来实际提高硬件系统的运行效率。(2)“AIx51虚拟单片机”是指用AI现有的8位和32位的单片机作为“寄主单片机”,用一组抽象的“内核指令集”、“内核架构”和“片上设备”来构造一系列新的单片机模型。然后在硬件上从理论方面用来探讨研究“寄主单片机”目前存在的问题和未来发展方向。同时在软件方面也可以用来探讨研究“寄主单片机”的主流软件开发工具目前存在的问题和未来发展方向,利用新的单片机模型研发出供现有的单片机使用的新的软件工具,提高现有的单片机系统的运行效率和开发应用水平。(3)“8051”指令集和“80251”指令集是Intel公司推出的8位单片机内核和准32位单片机的指令集:“8051”指令集是完备的8位CPU指令集,其各种寄存器运算指令和内存存取指令都是8位。内核只使用“8051”指令集的单片机只是8位单片机。“80251”指令集是不完备的32位CPU指令集,它没有32位的乘除法运算指令,没有完整的32位二进制运算指令和没有完整的32位内存存取指令,对应的只有16位的指令。因此“80251”也被称为“准32位指令集”或者“增强的16位指令集”,内核只使用“80251”指令集的单片机只是“准32位单片机”。AISTC32的架构不是已落后的251架构/Intel小气没公开,是AI最新设计的32位架构,AI只是借用了251的指令集。(4)基于“8051”和“80251”这两种指令集,AISTC公司推出了一系列的8位单片机(最新的包括8H系列单片机)和32位单片机(最新的包括STC32G/F系列单片机)。目前的AI8051U-32位系列单片机已经增加了32位的整数乘除法和32位的浮点数运算单元,未来的AI-8位系列单片机也将增加32位的整数乘除法和32位的浮点数运算单元,因此将来这两个系列的单片机都将具有32位的数据处理能力,大大超越了单纯“8051”和“80251”单片机的性能。(5)对于AI8位的单片机系列,目前主流的开发软件是基于“8051指令集”的Keil公司的C51编译器(使用A51汇编语言)以及SDCC编译器(使用SDCC51汇编语言)。对于STC32位的单片机系列,目前主流的开发软件是基于“80251指令集”的Keil公司的C251编译器(使用A251汇编语言)。对于即将来临的增加了新的数据处理单元的STC8位和32位系列单片机,C51和C251编译器中使用的基于“8051”和“80251”指令集的A51和A251汇编语言已经跟不上需要,必将成为STC单片机高效率软件开发的瓶颈。比如对于即将推出的AI8051U系列单片机而言,如果要实现符合C51规范的32位的加法运算“R4R5R6R7 = R4R5R6R7 + R0R1R2R3”,如果用A51汇编语言来写:“MOV A,R7;ADD A,R3; MOV R7,A; MOV A,R6; ADDC A,R2; MOV R6,A; MOV A,R5; ADDC A,R1; MOVR5,A; MOV A,R4; ADDC A,R0; MOV R4,A; ”,仍然需要12条汇编指令语句来编写。(6)为了解决基于“8051”和“80251”指令集的Keil的C51与C251编译器严重落后于STC32位新系列单片机发展的问题,笔者在“8051”和“80251”指令集的基础上提出了金水明“80151”和“80351”两个32位单片机的指令集模型,用来指导研制新的STC32位单片机开发软件工具和从理论上探讨基于80x51指令集的新的STC32位单片机内核架构。其中“80351”指令集的某些32位指令采用了可扩展结构,与未来的金水明“80451”64位指令集兼容。在“80151”和“80351”两个32位的指令集中,32位的操作均使用1条汇编语言指令完成。比如前面的符合C51/C251规范的32位加法运算“R4R5R6R7= R4R5R6R7 + R0R1R2R3”,如果用A151或者A351汇编语言来写都是:“ ADDEAX,EBX; ”1条汇编指令语句。 二、“80151”与“80351”指令集简介(7)“80151”与“80351”指令集是等级式的指令集。其中“80151”指令集是“8051”指令集(L0指令集)加“L1”32位运算存储扩展指令集组成的,“80351”指令集是“80251”指令集(L2指令集)加“L3”32位运算存储扩展指令集组成的。(8)“80151”指令集包含“8051”指令集的全部寄存器,并将8个8位的通用寄存器(R0、R1...R7)组成4个16位的通用寄存器(AX、AX2、BX、BX2)和组成2个32位的通用寄存器(EAX和EBX)。为了满足高性能单片机RTOS的需要,“80151”指令集增加了2个16位的指针寄存器(BP和VP)。“80151”指令集只使用8位的系统堆栈指针SP。中断和RTOS任务切换时只需使用128字节的系统堆栈(IDATA空间:080H~0FFH)。“80151”指令集的存储空间与“8051”指令集的存储空间一致。(9)“80351”指令集包含“80251”指令集的全部寄存器,并将8个32位的通用寄存器(DR0、DR4...DR28)组成4个32位的通用运算寄存器(EAX、EBX、ECX和EDX)以及4个32位的通用指针寄存器(EFP、EGP、EBP和EVP)。“80351”指令集使用16位的系统堆栈指针SPX。中断和RTOS任务切换时只需使用384字节的系统堆栈(EDATA空间:080H~1FFH)。“80351”指令集的存储空间与“80251”指令集的存储空间一致。(10)“8051”指令集是“80251”指令集的一个完整子集。为了保持一致性,“80151”指令集也设计为“80351”指令集的一个完整子集。 三、“80151”与“80351”指令集的研究平台(11)进行虚拟计算机的研究通常在硬件上需要一台“寄主计算机”,在软件上需要一个“虚拟机软件”。比如要想学习和研究Linux操作系统,可以使用1台PC机作为寄主计算机,然后在Windows操作系统上安装一个“虚拟机”软件。(12)为了研究“80151”和“80351”指令集,在硬件研究平台上笔者选择了 8H8K64U单片机和 32F12K54单片机作为“寄主单片机”,前者是纯“8051”指令集的8位单片机,没有带32位的硬件处理单元,后者在“80251”指令集的基础上,增加了32位的乘除法运算单元和32位的浮点数运算单元。(13)为了研究“80151”和“80351”指令集,笔者开发了“长缨151”C351语言编译器和“长缨351”C351语言编译器两个研究软件。(14)由于C语言是高级计算机语言,其支持32位的变量和运算与具体计算机内核的指令集无关,因此“长缨151”和“长缨351”支持的C语言规范都是一样的,统一称为“C351”语言规范。 作为“80151”和“80351”指令集研究的软件工具,“C351”语言规范只是寄主单片机的主流编译器C51/C251语言规范的一个“子集”,子集的大小以满足使用“80151”和“80351”指令集建立一个 AI 实际单片机RTOS所需的语法为界。(15)长缨151支持的“80151”指令集的汇编语言为A151汇编语言,长缨351支持的“80351”指令集的汇编语言为A351汇编语言。同样A151汇编语言是A351汇编语言的一个完整子集。 四、结束语本文简单地介绍了金水明“80151”和“80351”这两个32位指令集的来源、基本架构和软硬件研究平台。后续的文章将逐步“80151”和“80351”这两个32位指令集的具体细节和笔者的研究成果。有STC32F12K54实验箱,和追风剑-STC32F12K54核心功能实验板
=== 马上出 STC8051H 取代 STC32F12K54,
只是去掉了 iCache, 其他功能增强了
会在 STC32F12K54实验箱的基础上设计 STC8051H 实验箱
学习学习 不明觉厉. 80151/351编译器进展如何? 版主威武!
版主研制出来的话,那将是造福51世界啊 支持楼主,希望能早日用上。 期待~~ 13918210822 发表于 2024-8-1 05:19
80151/351编译器进展如何?
支持STC8061U的长缨-I C351编译器已推出了
STC8051U单片机,从入门到精通(1):继往开来的新一代STC单片机
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9909
(出处: 国芯技术交流网站)
逍遥派掌门人 发表于 2024-8-1 08:50
版主威武!
版主研制出来的话,那将是造福51世界啊
支持STC8061U的长缨-I C351编译器已推出了,欢迎指教
STC8051U单片机,从入门到精通(1):继往开来的新一代STC单片机
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9909
(出处: 国芯技术交流网站)
页:
[1]
2