MIDAS
Loading...
Searching...
No Matches
hwtest.cxx
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: hwtest.c
4 Created by: Stefan Ritt
5
6 Contents: Program which tests the architecture of the HW/OS
7
8 $Id:$
9
10\********************************************************************/
11
12#include <stdio.h>
13#include <string.h>
14
15struct {
16 char c;
17 double d;
19
20#ifdef vxw
21int hwtest()
22#else
23int main()
24#endif
25{
26 unsigned long dummy;
27 unsigned char *p;
28 float f;
29 double d;
30
31 printf("Data sizes:\n");
32 printf("sizeof(int) = %d\n", (int)sizeof(int));
33 printf("sizeof(float) = %d\n", (int)sizeof(float));
34 printf("sizeof(double) = %d\n", (int)sizeof(double));
35 printf("sizeof(long int) = %d\n", (int)sizeof(long int));
36 printf("sizeof(long double) = %d\n", (int)sizeof(long double));
37 printf("sizeof(char *) = %d\n", (int)sizeof(p));
38 if (sizeof(p) == 2)
39 printf("...this looks like a 16-bit OS\n\n");
40 else if (sizeof(p) == 4)
41 printf("...this looks like a 32-bit OS\n\n");
42 else if (sizeof(p) == 8)
43 printf("...this looks like a 64-bit OS\n\n");
44
45 printf("Byte order:\n");
46 dummy = 0x12345678;
47 p = (unsigned char *) &dummy;
48 printf("0x12345678 = %02X %02X %02X %02X\n", p[0], p[1], p[2], p[3]);
49 if (*((unsigned char *) &dummy) == 0x78)
50 printf("...this looks like a LITTLE ENDIAN machine\n\n");
51 else
52 printf("...this looks like a BIG ENDIAN machine\n\n");
53
54 printf("Floating point coding:\n");
55 f = (float) 1.2345;
56 p = (unsigned char *) &f;
57 printf("1.2345f = ");
58 for (unsigned i = 0; i < sizeof(float); i++)
59 printf("%02X ", p[i]);
60 printf("\n");
61 d = 1.2345;
62 p = (unsigned char *) &d;
63 printf("1.2345d = ");
64 for (unsigned i = 0; i < sizeof(double); i++)
65 printf("%02X ", p[i]);
66 printf("\n");
67
68 dummy = 0;
69 memcpy(&dummy, &f, sizeof(f));
70 if ((dummy & 0xFF) == 0x19 &&
71 ((dummy >> 8) & 0xFF) == 0x04 &&
72 ((dummy >> 16) & 0xFF) == 0x9E && ((dummy >> 24) & 0xFF) == 0x3F)
73 printf("...this looks like IEEE float format\n");
74 else if ((dummy & 0xFF) == 0x9E &&
75 ((dummy >> 8) & 0xFF) == 0x40 &&
76 ((dummy >> 16) & 0xFF) == 0x19 && ((dummy >> 24) & 0xFF) == 0x04)
77 printf("...this looks like VAX float format\n");
78
79 dummy = 0;
80 memcpy(&dummy, &d, sizeof(f));
81 if ((dummy & 0xFF) == 0x8D &&
82 ((dummy >> 8) & 0xFF) == 0x97 &&
83 ((dummy >> 16) & 0xFF) == 0x6E && ((dummy >> 24) & 0xFF) == 0x12)
84 printf("...this looks like IEEE double float format (little endian)\n\n");
85 else if ((dummy & 0xFF) == 0x83 &&
86 ((dummy >> 8) & 0xFF) == 0xC0 &&
87 ((dummy >> 16) & 0xFF) == 0xF3 && ((dummy >> 24) & 0xFF) == 0x3F)
88 printf("...this looks like IEEE double float format (big endian)\n\n");
89 else if ((dummy & 0xFF) == 0x13 &&
90 ((dummy >> 8) & 0xFF) == 0x40 &&
91 ((dummy >> 16) & 0xFF) == 0x83 && ((dummy >> 24) & 0xFF) == 0xC0)
92 printf("...this looks like VAX G double format\n\n");
93 else if ((dummy & 0xFF) == 0x9E &&
94 ((dummy >> 8) & 0xFF) == 0x40 &&
95 ((dummy >> 16) & 0xFF) == 0x18 && ((dummy >> 24) & 0xFF) == 0x04)
96 printf("...this looks like VAX D double format\n\n");
97
98
99 int i = (char*) (&test_align.d) - (char*) &test_align.c;
100 printf("Structure members are %d-byte aligned\n\n", i);
101
102 return 1;
103}
struct @19 test_align
double d
Definition hwtest.cxx:17
char c
Definition hwtest.cxx:16
int main()
Definition hwtest.cxx:23
INT i
Definition mdump.cxx:32
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24