⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux.h

📁 < 虚拟机设计与实现> 的source code, linux版本
💻 H
字号:
#ifndef _LINUX_H
#define _LINUX_H

#include <stdio.h>

#define S1	signed char#define S2	signed short#define S4	signed long#define S8	signed long long	#define U1	unsigned char#define U2	unsigned short#define U4	unsigned long#define U8	unsigned long long

/*
	Use ANSI-754 standard for single and double precision floats
	single precision = 4 bytes
	double precision = 8 bytes
*/

#define F4	float
#define F8	double

extern U1 fb[8];

/* platform-specific I/O ------------------------------------------*/

#define PRINT_UREG(rstr,reg)	printf("%-6s=%-21llu", rstr, reg)#define PRINT_SREG(rstr,reg)	printf("%-6s=%-21lld", rstr, reg)#define PRINT_FREG(rstr,reg)	printf("%-6s=%g", rstr, (F4)reg)#define PRINT_DREG(rstr,reg)	printf("%-6s=%g", rstr, (F8)reg)#define pU1(arg)	printf("%u", arg)#define pU2(arg)	printf("%hu", arg)#define pU4(arg)	printf("%lu", arg)#define pU8(arg)	printf("%llu", arg)#define pS1(arg)	printf("%d", arg)#define pS2(arg)	printf("%hd", arg)#define pS4(arg)	printf("%ld", arg)#define pS8(arg)	printf("%lld", arg)#define PRINT_MEM(index)	printf("RAM[%llu]=%u", index, RAM[index])#define rU8(arg)	scanf("%llu", arg)#define fpU8(ptr,arg)	fprintf(ptr, "%llu", arg)#define fpS8(ptr,arg)	fprintf(ptr, "%lld", arg)

#define FORMAT_WORD(arr,start)	{ fb[0]=arr[start+1];\
                                  fb[1]=arr[start];\
                                  arr[start]=fb[0];\
                                  arr[start+1]=fb[1]; }

#define FORMAT_DWORD(arr,start)	{ fb[0]=arr[start+3];\
                                  fb[1]=arr[start+2];\
								  fb[2]=arr[start+1];\
								  fb[3]=arr[start];\
                                  arr[start]=fb[0];\
                                  arr[start+1]=fb[1];\
								  arr[start+2]=fb[2];\
								  arr[start+3]=fb[3]; }

#define FORMAT_QWORD(arr,start){ fb[0]=arr[start+7];\
                                  fb[1]=arr[start+6];\
								  fb[2]=arr[start+5];\
								  fb[3]=arr[start+4];\
								  fb[4]=arr[start+3];\
								  fb[5]=arr[start+2];\
								  fb[6]=arr[start+1];\
								  fb[7]=arr[start];\
                                  arr[start]=fb[0];\
                                  arr[start+1]=fb[1];\
								  arr[start+2]=fb[2];\
								  arr[start+3]=fb[3];\
								  arr[start+4]=fb[4];\
								  arr[start+5]=fb[5];\
								  arr[start+6]=fb[6];\
								  arr[start+7]=fb[7]; }

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  public prototypes                                                +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void checkEndian();
void printBytes(S1 bytes[], int nbytes);
void testConversion();

U2 bytecodeToWord(U1 bytes[]);
U4 bytecodeToDWord(U1 bytes[]);
U8 bytecodeToQWord(U1 bytes[]);
F4 bytecodeToFloat(U1 bytes[]);
F8 bytecodeToDouble(U1 bytes[]);

void wordToBytecode(U2 word, U1 arr[]);
void dwordToBytecode(U4 dword, U1 arr[]);
void qwordToBytecode(U8 qword, U1 arr[]);
void floatToBytecode(F4 flt, U1 arr[]);
void doubleToBytecode(F8 dbl, U1 arr[]);

U4 getAvailableMemory();
U4 getFileSize(char *name);
void testNativeFunctions();

U8 stringToU8(char *str);
void shutDown(U1 code);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -