OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [doc/] [implement-c.texi] - Blame information for rev 774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 711 jeremybenn
@c Copyright (C) 2001, 2002, 2003, 2004, 2006, 2008
2
@c Free Software Foundation, Inc.
3
@c This is part of the GCC manual.
4
@c For copying conditions, see the file gcc.texi.
5
 
6
@node C Implementation
7
@chapter C Implementation-defined behavior
8
@cindex implementation-defined behavior, C language
9
 
10
A conforming implementation of ISO C is required to document its
11
choice of behavior in each of the areas that are designated
12
``implementation defined''.  The following lists all such areas,
13
along with the section numbers from the ISO/IEC 9899:1990 and ISO/IEC
14
9899:1999 standards.  Some areas are only implementation-defined in
15
one version of the standard.
16
 
17
Some choices depend on the externally determined ABI for the platform
18
(including standard character encodings) which GCC follows; these are
19
listed as ``determined by ABI'' below.  @xref{Compatibility, , Binary
20
Compatibility}, and @uref{http://gcc.gnu.org/readings.html}.  Some
21
choices are documented in the preprocessor manual.
22
@xref{Implementation-defined behavior, , Implementation-defined
23
behavior, cpp, The C Preprocessor}.  Some choices are made by the
24
library and operating system (or other environment when compiling for
25
a freestanding environment); refer to their documentation for details.
26
 
27
@menu
28
* Translation implementation::
29
* Environment implementation::
30
* Identifiers implementation::
31
* Characters implementation::
32
* Integers implementation::
33
* Floating point implementation::
34
* Arrays and pointers implementation::
35
* Hints implementation::
36
* Structures unions enumerations and bit-fields implementation::
37
* Qualifiers implementation::
38
* Declarators implementation::
39
* Statements implementation::
40
* Preprocessing directives implementation::
41
* Library functions implementation::
42
* Architecture implementation::
43
* Locale-specific behavior implementation::
44
@end menu
45
 
46
@node Translation implementation
47
@section Translation
48
 
49
@itemize @bullet
50
@item
51
@cite{How a diagnostic is identified (C90 3.7, C99 3.10, C90 and C99 5.1.1.3).}
52
 
53
Diagnostics consist of all the output sent to stderr by GCC@.
54
 
55
@item
56
@cite{Whether each nonempty sequence of white-space characters other than
57
new-line is retained or replaced by one space character in translation
58
phase 3 (C90 and C99 5.1.1.2).}
59
 
60
@xref{Implementation-defined behavior, , Implementation-defined
61
behavior, cpp, The C Preprocessor}.
62
 
63
@end itemize
64
 
65
@node Environment implementation
66
@section Environment
67
 
68
The behavior of most of these points are dependent on the implementation
69
of the C library, and are not defined by GCC itself.
70
 
71
@itemize @bullet
72
@item
73
@cite{The mapping between physical source file multibyte characters
74
and the source character set in translation phase 1 (C90 and C99 5.1.1.2).}
75
 
76
@xref{Implementation-defined behavior, , Implementation-defined
77
behavior, cpp, The C Preprocessor}.
78
 
79
@end itemize
80
 
81
@node Identifiers implementation
82
@section Identifiers
83
 
84
@itemize @bullet
85
@item
86
@cite{Which additional multibyte characters may appear in identifiers
87
and their correspondence to universal character names (C99 6.4.2).}
88
 
89
@xref{Implementation-defined behavior, , Implementation-defined
90
behavior, cpp, The C Preprocessor}.
91
 
92
@item
93
@cite{The number of significant initial characters in an identifier
94
(C90 6.1.2, C90 and C99 5.2.4.1, C99 6.4.2).}
95
 
96
For internal names, all characters are significant.  For external names,
97
the number of significant characters are defined by the linker; for
98
almost all targets, all characters are significant.
99
 
100
@item
101
@cite{Whether case distinctions are significant in an identifier with
102
external linkage (C90 6.1.2).}
103
 
104
This is a property of the linker.  C99 requires that case distinctions
105
are always significant in identifiers with external linkage and
106
systems without this property are not supported by GCC@.
107
 
108
@end itemize
109
 
110
@node Characters implementation
111
@section Characters
112
 
113
@itemize @bullet
114
@item
115
@cite{The number of bits in a byte (C90 3.4, C99 3.6).}
116
 
117
Determined by ABI@.
118
 
119
@item
120
@cite{The values of the members of the execution character set (C90
121
and C99 5.2.1).}
122
 
123
Determined by ABI@.
124
 
125
@item
126
@cite{The unique value of the member of the execution character set produced
127
for each of the standard alphabetic escape sequences (C90 and C99 5.2.2).}
128
 
129
Determined by ABI@.
130
 
131
@item
132
@cite{The value of a @code{char} object into which has been stored any
133
character other than a member of the basic execution character set
134
(C90 6.1.2.5, C99 6.2.5).}
135
 
136
Determined by ABI@.
137
 
138
@item
139
@cite{Which of @code{signed char} or @code{unsigned char} has the same
140
range, representation, and behavior as ``plain'' @code{char} (C90
141
6.1.2.5, C90 6.2.1.1, C99 6.2.5, C99 6.3.1.1).}
142
 
143
@opindex fsigned-char
144
@opindex funsigned-char
145
Determined by ABI@.  The options @option{-funsigned-char} and
146
@option{-fsigned-char} change the default.  @xref{C Dialect Options, ,
147
Options Controlling C Dialect}.
148
 
149
@item
150
@cite{The mapping of members of the source character set (in character
151
constants and string literals) to members of the execution character
152
set (C90 6.1.3.4, C99 6.4.4.4, C90 and C99 5.1.1.2).}
153
 
154
Determined by ABI@.
155
 
156
@item
157
@cite{The value of an integer character constant containing more than one
158
character or containing a character or escape sequence that does not map
159
to a single-byte execution character (C90 6.1.3.4, C99 6.4.4.4).}
160
 
161
@xref{Implementation-defined behavior, , Implementation-defined
162
behavior, cpp, The C Preprocessor}.
163
 
164
@item
165
@cite{The value of a wide character constant containing more than one
166
multibyte character, or containing a multibyte character or escape
167
sequence not represented in the extended execution character set (C90
168
6.1.3.4, C99 6.4.4.4).}
169
 
170
@xref{Implementation-defined behavior, , Implementation-defined
171
behavior, cpp, The C Preprocessor}.
172
 
173
@item
174
@cite{The current locale used to convert a wide character constant consisting
175
of a single multibyte character that maps to a member of the extended
176
execution character set into a corresponding wide character code (C90
177
6.1.3.4, C99 6.4.4.4).}
178
 
179
@xref{Implementation-defined behavior, , Implementation-defined
180
behavior, cpp, The C Preprocessor}.
181
 
182
@item
183
@cite{The current locale used to convert a wide string literal into
184
corresponding wide character codes (C90 6.1.4, C99 6.4.5).}
185
 
186
@xref{Implementation-defined behavior, , Implementation-defined
187
behavior, cpp, The C Preprocessor}.
188
 
189
@item
190
@cite{The value of a string literal containing a multibyte character or escape
191
sequence not represented in the execution character set (C90 6.1.4, C99 6.4.5).}
192
 
193
@xref{Implementation-defined behavior, , Implementation-defined
194
behavior, cpp, The C Preprocessor}.
195
@end itemize
196
 
197
@node Integers implementation
198
@section Integers
199
 
200
@itemize @bullet
201
@item
202
@cite{Any extended integer types that exist in the implementation (C99 6.2.5).}
203
 
204
GCC does not support any extended integer types.
205
@c The __mode__ attribute might create types of precisions not
206
@c otherwise supported, but the syntax isn't right for use everywhere
207
@c the standard type names might be used.  Predefined typedefs should
208
@c be used if any extended integer types are to be defined.  The
209
@c __int128_t and __uint128_t typedefs are not extended integer types
210
@c as they are generally longer than the ABI-specified intmax_t.
211
 
212
@item
213
@cite{Whether signed integer types are represented using sign and magnitude,
214
two's complement, or one's complement, and whether the extraordinary value
215
is a trap representation or an ordinary value (C99 6.2.6.2).}
216
 
217
GCC supports only two's complement integer types, and all bit patterns
218
are ordinary values.
219
 
220
@item
221
@cite{The rank of any extended integer type relative to another extended
222
integer type with the same precision (C99 6.3.1.1).}
223
 
224
GCC does not support any extended integer types.
225
@c If it did, there would only be one of each precision and signedness.
226
 
227
@item
228
@cite{The result of, or the signal raised by, converting an integer to a
229
signed integer type when the value cannot be represented in an object of
230
that type (C90 6.2.1.2, C99 6.3.1.3).}
231
 
232
For conversion to a type of width @math{N}, the value is reduced
233
modulo @math{2^N} to be within range of the type; no signal is raised.
234
 
235
@item
236
@cite{The results of some bitwise operations on signed integers (C90
237
6.3, C99 6.5).}
238
 
239
Bitwise operators act on the representation of the value including
240
both the sign and value bits, where the sign bit is considered
241
immediately above the highest-value value bit.  Signed @samp{>>} acts
242
on negative numbers by sign extension.
243
 
244
GCC does not use the latitude given in C99 only to treat certain
245
aspects of signed @samp{<<} as undefined, but this is subject to
246
change.
247
 
248
@item
249
@cite{The sign of the remainder on integer division (C90 6.3.5).}
250
 
251
GCC always follows the C99 requirement that the result of division is
252
truncated towards zero.
253
 
254
@end itemize
255
 
256
@node Floating point implementation
257
@section Floating point
258
 
259
@itemize @bullet
260
@item
261
@cite{The accuracy of the floating-point operations and of the library
262
functions in @code{<math.h>} and @code{<complex.h>} that return floating-point
263
results (C90 and C99 5.2.4.2.2).}
264
 
265
The accuracy is unknown.
266
 
267
@item
268
@cite{The rounding behaviors characterized by non-standard values
269
of @code{FLT_ROUNDS} @gol
270
(C90 and C99 5.2.4.2.2).}
271
 
272
GCC does not use such values.
273
 
274
@item
275
@cite{The evaluation methods characterized by non-standard negative
276
values of @code{FLT_EVAL_METHOD} (C99 5.2.4.2.2).}
277
 
278
GCC does not use such values.
279
 
280
@item
281
@cite{The direction of rounding when an integer is converted to a
282
floating-point number that cannot exactly represent the original
283
value (C90 6.2.1.3, C99 6.3.1.4).}
284
 
285
C99 Annex F is followed.
286
 
287
@item
288
@cite{The direction of rounding when a floating-point number is
289
converted to a narrower floating-point number (C90 6.2.1.4, C99
290
6.3.1.5).}
291
 
292
C99 Annex F is followed.
293
 
294
@item
295
@cite{How the nearest representable value or the larger or smaller
296
representable value immediately adjacent to the nearest representable
297
value is chosen for certain floating constants (C90 6.1.3.1, C99
298
6.4.4.2).}
299
 
300
C99 Annex F is followed.
301
 
302
@item
303
@cite{Whether and how floating expressions are contracted when not
304
disallowed by the @code{FP_CONTRACT} pragma (C99 6.5).}
305
 
306
Expressions are currently only contracted if
307
@option{-funsafe-math-optimizations} or @option{-ffast-math} are used.
308
This is subject to change.
309
 
310
@item
311
@cite{The default state for the @code{FENV_ACCESS} pragma (C99 7.6.1).}
312
 
313
This pragma is not implemented, but the default is to ``off'' unless
314
@option{-frounding-math} is used in which case it is ``on''.
315
 
316
@item
317
@cite{Additional floating-point exceptions, rounding modes, environments,
318
and classifications, and their macro names (C99 7.6, C99 7.12).}
319
 
320
This is dependent on the implementation of the C library, and is not
321
defined by GCC itself.
322
 
323
@item
324
@cite{The default state for the @code{FP_CONTRACT} pragma (C99 7.12.2).}
325
 
326
This pragma is not implemented.  Expressions are currently only
327
contracted if @option{-funsafe-math-optimizations} or
328
@option{-ffast-math} are used.  This is subject to change.
329
 
330
@item
331
@cite{Whether the ``inexact'' floating-point exception can be raised
332
when the rounded result actually does equal the mathematical result
333
in an IEC 60559 conformant implementation (C99 F.9).}
334
 
335
This is dependent on the implementation of the C library, and is not
336
defined by GCC itself.
337
 
338
@item
339
@cite{Whether the ``underflow'' (and ``inexact'') floating-point
340
exception can be raised when a result is tiny but not inexact in an
341
IEC 60559 conformant implementation (C99 F.9).}
342
 
343
This is dependent on the implementation of the C library, and is not
344
defined by GCC itself.
345
 
346
@end itemize
347
 
348
@node Arrays and pointers implementation
349
@section Arrays and pointers
350
 
351
@itemize @bullet
352
@item
353
@cite{The result of converting a pointer to an integer or
354
vice versa (C90 6.3.4, C99 6.3.2.3).}
355
 
356
A cast from pointer to integer discards most-significant bits if the
357
pointer representation is larger than the integer type,
358
sign-extends@footnote{Future versions of GCC may zero-extend, or use
359
a target-defined @code{ptr_extend} pattern.  Do not rely on sign extension.}
360
if the pointer representation is smaller than the integer type, otherwise
361
the bits are unchanged.
362
@c ??? We've always claimed that pointers were unsigned entities.
363
@c Shouldn't we therefore be doing zero-extension?  If so, the bug
364
@c is in convert_to_integer, where we call type_for_size and request
365
@c a signed integral type.  On the other hand, it might be most useful
366
@c for the target if we extend according to POINTERS_EXTEND_UNSIGNED.
367
 
368
A cast from integer to pointer discards most-significant bits if the
369
pointer representation is smaller than the integer type, extends according
370
to the signedness of the integer type if the pointer representation
371
is larger than the integer type, otherwise the bits are unchanged.
372
 
373
When casting from pointer to integer and back again, the resulting
374
pointer must reference the same object as the original pointer, otherwise
375
the behavior is undefined.  That is, one may not use integer arithmetic to
376
avoid the undefined behavior of pointer arithmetic as proscribed in
377
C99 6.5.6/8.
378
 
379
@item
380
@cite{The size of the result of subtracting two pointers to elements
381
of the same array (C90 6.3.6, C99 6.5.6).}
382
 
383
The value is as specified in the standard and the type is determined
384
by the ABI@.
385
 
386
@end itemize
387
 
388
@node Hints implementation
389
@section Hints
390
 
391
@itemize @bullet
392
@item
393
@cite{The extent to which suggestions made by using the @code{register}
394
storage-class specifier are effective (C90 6.5.1, C99 6.7.1).}
395
 
396
The @code{register} specifier affects code generation only in these ways:
397
 
398
@itemize @bullet
399
@item
400
When used as part of the register variable extension, see
401
@ref{Explicit Reg Vars}.
402
 
403
@item
404
When @option{-O0} is in use, the compiler allocates distinct stack
405
memory for all variables that do not have the @code{register}
406
storage-class specifier; if @code{register} is specified, the variable
407
may have a shorter lifespan than the code would indicate and may never
408
be placed in memory.
409
 
410
@item
411
On some rare x86 targets, @code{setjmp} doesn't save the registers in
412
all circumstances.  In those cases, GCC doesn't allocate any variables
413
in registers unless they are marked @code{register}.
414
 
415
@end itemize
416
 
417
@item
418
@cite{The extent to which suggestions made by using the inline function
419
specifier are effective (C99 6.7.4).}
420
 
421
GCC will not inline any functions if the @option{-fno-inline} option is
422
used or if @option{-O0} is used.  Otherwise, GCC may still be unable to
423
inline a function for many reasons; the @option{-Winline} option may be
424
used to determine if a function has not been inlined and why not.
425
 
426
@end itemize
427
 
428
@node Structures unions enumerations and bit-fields implementation
429
@section Structures, unions, enumerations, and bit-fields
430
 
431
@itemize @bullet
432
@item
433
@cite{A member of a union object is accessed using a member of a
434
different type (C90 6.3.2.3).}
435
 
436
The relevant bytes of the representation of the object are treated as
437
an object of the type used for the access.  @xref{Type-punning}.  This
438
may be a trap representation.
439
 
440
@item
441
@cite{Whether a ``plain'' @code{int} bit-field is treated as a
442
@code{signed int} bit-field or as an @code{unsigned int} bit-field
443
(C90 6.5.2, C90 6.5.2.1, C99 6.7.2, C99 6.7.2.1).}
444
 
445
@opindex funsigned-bitfields
446
By default it is treated as @code{signed int} but this may be changed
447
by the @option{-funsigned-bitfields} option.
448
 
449
@item
450
@cite{Allowable bit-field types other than @code{_Bool}, @code{signed int},
451
and @code{unsigned int} (C99 6.7.2.1).}
452
 
453
No other types are permitted in strictly conforming mode.
454
@c Would it be better to restrict the pedwarn for other types to C90
455
@c mode and document the other types for C99 mode?
456
 
457
@item
458
@cite{Whether a bit-field can straddle a storage-unit boundary (C90
459
6.5.2.1, C99 6.7.2.1).}
460
 
461
Determined by ABI@.
462
 
463
@item
464
@cite{The order of allocation of bit-fields within a unit (C90
465
6.5.2.1, C99 6.7.2.1).}
466
 
467
Determined by ABI@.
468
 
469
@item
470
@cite{The alignment of non-bit-field members of structures (C90
471
6.5.2.1, C99 6.7.2.1).}
472
 
473
Determined by ABI@.
474
 
475
@item
476
@cite{The integer type compatible with each enumerated type (C90
477
6.5.2.2, C99 6.7.2.2).}
478
 
479
@opindex fshort-enums
480
Normally, the type is @code{unsigned int} if there are no negative
481
values in the enumeration, otherwise @code{int}.  If
482
@option{-fshort-enums} is specified, then if there are negative values
483
it is the first of @code{signed char}, @code{short} and @code{int}
484
that can represent all the values, otherwise it is the first of
485
@code{unsigned char}, @code{unsigned short} and @code{unsigned int}
486
that can represent all the values.
487
@c On a few unusual targets with 64-bit int, this doesn't agree with
488
@c the code and one of the types accessed via mode attributes (which
489
@c are not currently considered extended integer types) may be used.
490
@c If these types are made extended integer types, it would still be
491
@c the case that -fshort-enums stops the implementation from
492
@c conforming to C90 on those targets.
493
 
494
On some targets, @option{-fshort-enums} is the default; this is
495
determined by the ABI@.
496
 
497
@end itemize
498
 
499
@node Qualifiers implementation
500
@section Qualifiers
501
 
502
@itemize @bullet
503
@item
504
@cite{What constitutes an access to an object that has volatile-qualified
505
type (C90 6.5.3, C99 6.7.3).}
506
 
507
Such an object is normally accessed by pointers and used for accessing
508
hardware.  In most expressions, it is intuitively obvious what is a read
509
and what is a write.  For example
510
 
511
@smallexample
512
volatile int *dst = @var{somevalue};
513
volatile int *src = @var{someothervalue};
514
*dst = *src;
515
@end smallexample
516
 
517
@noindent
518
will cause a read of the volatile object pointed to by @var{src} and store the
519
value into the volatile object pointed to by @var{dst}.  There is no
520
guarantee that these reads and writes are atomic, especially for objects
521
larger than @code{int}.
522
 
523
However, if the volatile storage is not being modified, and the value of
524
the volatile storage is not used, then the situation is less obvious.
525
For example
526
 
527
@smallexample
528
volatile int *src = @var{somevalue};
529
*src;
530
@end smallexample
531
 
532
According to the C standard, such an expression is an rvalue whose type
533
is the unqualified version of its original type, i.e. @code{int}.  Whether
534
GCC interprets this as a read of the volatile object being pointed to or
535
only as a request to evaluate the expression for its side-effects depends
536
on this type.
537
 
538
If it is a scalar type, or on most targets an aggregate type whose only
539
member object is of a scalar type, or a union type whose member objects
540
are of scalar types, the expression is interpreted by GCC as a read of
541
the volatile object; in the other cases, the expression is only evaluated
542
for its side-effects.
543
 
544
@end itemize
545
 
546
@node Declarators implementation
547
@section Declarators
548
 
549
@itemize @bullet
550
@item
551
@cite{The maximum number of declarators that may modify an arithmetic,
552
structure or union type (C90 6.5.4).}
553
 
554
GCC is only limited by available memory.
555
 
556
@end itemize
557
 
558
@node Statements implementation
559
@section Statements
560
 
561
@itemize @bullet
562
@item
563
@cite{The maximum number of @code{case} values in a @code{switch}
564
statement (C90 6.6.4.2).}
565
 
566
GCC is only limited by available memory.
567
 
568
@end itemize
569
 
570
@node Preprocessing directives implementation
571
@section Preprocessing directives
572
 
573
@xref{Implementation-defined behavior, , Implementation-defined
574
behavior, cpp, The C Preprocessor}, for details of these aspects of
575
implementation-defined behavior.
576
 
577
@itemize @bullet
578
@item
579
@cite{How sequences in both forms of header names are mapped to headers
580
or external source file names (C90 6.1.7, C99 6.4.7).}
581
 
582
@item
583
@cite{Whether the value of a character constant in a constant expression
584
that controls conditional inclusion matches the value of the same character
585
constant in the execution character set (C90 6.8.1, C99 6.10.1).}
586
 
587
@item
588
@cite{Whether the value of a single-character character constant in a
589
constant expression that controls conditional inclusion may have a
590
negative value (C90 6.8.1, C99 6.10.1).}
591
 
592
@item
593
@cite{The places that are searched for an included @samp{<>} delimited
594
header, and how the places are specified or the header is
595
identified (C90 6.8.2, C99 6.10.2).}
596
 
597
@item
598
@cite{How the named source file is searched for in an included @samp{""}
599
delimited header (C90 6.8.2, C99 6.10.2).}
600
 
601
@item
602
@cite{The method by which preprocessing tokens (possibly resulting from
603
macro expansion) in a @code{#include} directive are combined into a header
604
name (C90 6.8.2, C99 6.10.2).}
605
 
606
@item
607
@cite{The nesting limit for @code{#include} processing (C90 6.8.2, C99
608
6.10.2).}
609
 
610
@item
611
@cite{Whether the @samp{#} operator inserts a @samp{\} character before
612
the @samp{\} character that begins a universal character name in a
613
character constant or string literal (C99 6.10.3.2).}
614
 
615
@item
616
@cite{The behavior on each recognized non-@code{STDC #pragma}
617
directive (C90 6.8.6, C99 6.10.6).}
618
 
619
@xref{Pragmas, , Pragmas, cpp, The C Preprocessor}, for details of
620
pragmas accepted by GCC on all targets.  @xref{Pragmas, , Pragmas
621
Accepted by GCC}, for details of target-specific pragmas.
622
 
623
@item
624
@cite{The definitions for @code{__DATE__} and @code{__TIME__} when
625
respectively, the date and time of translation are not available (C90
626
6.8.8, C99 6.10.8).}
627
 
628
@end itemize
629
 
630
@node Library functions implementation
631
@section Library functions
632
 
633
The behavior of most of these points are dependent on the implementation
634
of the C library, and are not defined by GCC itself.
635
 
636
@itemize @bullet
637
@item
638
@cite{The null pointer constant to which the macro @code{NULL} expands
639
(C90 7.1.6, C99 7.17).}
640
 
641
In @code{<stddef.h>}, @code{NULL} expands to @code{((void *)0)}.  GCC
642
does not provide the other headers which define @code{NULL} and some
643
library implementations may use other definitions in those headers.
644
 
645
@end itemize
646
 
647
@node Architecture implementation
648
@section Architecture
649
 
650
@itemize @bullet
651
@item
652
@cite{The values or expressions assigned to the macros specified in the
653
headers @code{<float.h>}, @code{<limits.h>}, and @code{<stdint.h>}
654
(C90 and C99 5.2.4.2, C99 7.18.2, C99 7.18.3).}
655
 
656
Determined by ABI@.
657
 
658
@item
659
@cite{The number, order, and encoding of bytes in any object
660
(when not explicitly specified in this International Standard) (C99 6.2.6.1).}
661
 
662
Determined by ABI@.
663
 
664
@item
665
@cite{The value of the result of the @code{sizeof} operator (C90
666
6.3.3.4, C99 6.5.3.4).}
667
 
668
Determined by ABI@.
669
 
670
@end itemize
671
 
672
@node Locale-specific behavior implementation
673
@section Locale-specific behavior
674
 
675
The behavior of these points are dependent on the implementation
676
of the C library, and are not defined by GCC itself.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.