HEC虚拟机的一些改进建议

本文提出了对HEC虚拟机的几点改进建议,包括使用移植性更好的字节序转换方法,如利用sockets API中的ntohs()和ntohl()函数,以及改进指令验证过程,通过设计小语言描述指令格式,提高代码复用性和可维护性。此外,还建议增加SLTU指令以支持有符号整数比较。
摘要由CSDN通过智能技术生成

HEC虚拟机的一些改进建议

陈硕 2004-02-13

在《虚拟机的设计与实现——C/C++》一书中,作者Bill Blunden描述了一个简单但完整的虚拟机——HEC的设计及实现。在阅读第三章的过程中,我发现有几处值得改进的地方。不是针对HEC的总体设计和代码结构——那样牵一发而动全局,而是针对HEC虚拟机实现代码中某些细节做些改进。

1.        转换字节序

HEC的字节序(byte order)是big-endian(高位在前),而宿主平台(Win32 on Intel)是little-endian(低位在前),所以在装入.RUN文件时需要转换字节序。作者先定义了HEC虚拟机的各种类型(p.61,原书p.67):

#define U1    unsigned char

#define U2    unsigned short

#define U4    unsigned long

#define U8    unsigned __int64

然后定义了10个转换函数(p.62,原书p.68)。例如,U2 bytecodeToWord(U1 bytes[]) 的作用是将big-endian16位无符号整数转换为本机格式:

U2 bytecodeToWord(U1 bytes[])

{

    U2 word;

    U1 *buffer;

 

    buffer = (U1*)&word;

    buffer[0] = bytes[1];

    buffer[1] = bytes[0];

 

    return(word);

}

这个函数没有考虑移植性(portability),它认定本机的字节序是little-endian

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值