Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 5 reacties
Bron: Open Watcom

In de zomer van 1965 heeft een groep studenten van de University of Waterloo in Canada een FORTRAN compiler, met de naam WATFOR, ontwikkeld die draaide op een IBM 7040 systeem. Deze compiler was geschreven in WSL en werd ook geschikt gemaakt voor andere systemen zoals de IBM 360 en de DEC PDP-11. Na vele ontwikkelingen, die op deze pagina na te lezen zijn, is het uiteindelijk door gegroeid tot Open Watcom. Deze opensource compiler kan broncode in C, C++ en Fortran omzetten naar een uitvoerbaar bestand op het DOS, OS/2 en Windows-platform. De ontwikkelaars van SciTech hebben versie 1.6 uitgebracht met de volgende lijst van aanpassingen:

List of changes in C/C++ 1.6:
  • The C compiler has been modified to use the underlying bit-field type and not signed/unsigned int as the type of operand which is a bit-field. This is consistent with the C++ compiler and fixes some problems when bit-fields larger than int are used.
  • Processing of #pragma aux has been corrected in the C compiler. This fixes problems when using the mmintrin.h header, among others.
  • The C compiler now accepts __declspec modifiers specifying calling conventions applied to variables, not just functions. The new behavior is consistent with the C++ compiler, and also with the fact that ordinary calling convention type modifiers can be used with variables.
  • The C and C++ compilers have been fixed to properly declare variable names based on calling convention specifiers. This fixes problems with building code using IBM SOM. Note that the current behavior is the same as in Open Watcom 1.3 and earlier.
  • The C compiler's preprocessor has been modified to allow use of macros with large number of arguments (255 or more).
  • The C compiler no longer generates internal errors when options -ri and -oe are specified at the same time.
  • The C++ compiler has been fixed to inline intrinsic functions.
  • The 386 compilers have been changed to default to tuning code for P6 architecture instead of Pentium. Optimizing for P6 typically results in slightly more compact and faster code.
  • The 386 C compiler has been fixed to properly convert between flat and __far16 pointers, especially pointers to functions. Its behavior should now be compatible with the C++ compiler. The problem was most likely affecting OS/2 users who wrote mixed 16-bit and 32-bit code.
  • The C compiler has been changed to allow redeclaration of functions in rare cases where initial declaration did not specify a calling convention and the subsequent declaration specified a calling convention which matched the default.
  • A new -zwf switch has been added to the C and C++ compilers. This switch is off by default and enables generation of FWAIT instructions on 386 and later CPUs. It is only needed in unusual situations.
  • The C compiler now correctly converts 64-bit integer constants to floating-point constants.
  • The code generator no longer merges memory accesses when volatile variables are involved.
  • The code generator now correctly const folds 64-bit right shifts.
  • The code generator now properly converts between far pointers and 64-bit integers. Attempts to convert a 48-bit far pointer to 64-bit integer no longer cause a crash.
  • The code generator has been modified to slightly decrease code size when optimizing for size (-os).
  • The non-standard alloca.h header has been added for compatibility with other compilers.
  • The strftime() library function has been extended to support date formats introduced in C99.
  • The file pointer type used with lseek() and tell() has been changed to off_t (from long) for compatibility with POSIX.
  • The 386 versions of _clear87() and _status87() functions have been modified to use the no-wait form of FPU control instructions. This allows these functions to be used in exception handlers when there are pending unmasked floating-point exceptions.
  • The 16-bit 8087 emulator has been fixed to correctly evaluate multiplies as infinity instead of zero in rare overflow situations.
  • The resource compiler (wrc) has been fixed to store long integer constants as 32-bit quantities in RCDATA or user data resource statements. This behavior applies to Win16, Win32, and OS/2 targets. Integers without the 'L' suffix are stored as 16-bit and potentially truncated.
  • The OS/2 specific part of the resource compiler has been corrected to process RCDATA statements properly.
  • The assembler (wasm) now supports external absolute symbols. The SIZE, SIZEOF, LENGTH, and LENGTHOF operators have been corrected for structures.
  • Classification of privileged instructions in the assembler has been updated to match MASM.
  • The assembler now evaluates expressions in return instructions correctly. Previously, code such as 'ret 28+4' would be sometimes erroneously assembled as 'ret 28' instead of 'ret 32'.
  • The linker has been changed to only recognize segments of class 'STACK' as stack segment. Previously, any segment with class name ending with 'STACK' (eg. 'FSTACK') was recognized.
  • Several minor problems related to creating DOS executables have been fixed in the linker.
  • The RUNTIME linker directive has been extended to allow ELF ABI type and version specification. This functionality is similar to the brandelf utility. See the Linker Guide for details.
  • The wmake utility has been modified such that in native wmake mode, a symbolic target with no command list is always considered to have had its command list executed. That will cause any targets that are dependent on this symbolic target to be considered out of date.
  • The Win32 trap file is now able to determine the full pathname of debuggee's loaded DLLs. This may ease debugging in some cases as the debugger will be more likely to find debugging information for DLLs.
  • The Win16 debugger trap file (std.dll) has been modified to allow 16-bit wdw to run on Windows NT platforms without reporting a spurious error message on exit.
  • Numerous problems with the Win386 extender support have been fixed so that Win386 now works again.
  • The dmpobj utility has been ehnanced to support additional OMF records, and new command line options have been added.
Versienummer:1.6
Besturingssystemen:Windows 9x, Windows NT, Windows 2000, Windows XP, DOS, OS/2, Windows Server 2003
Website:Open Watcom
Download:http://www.openwatcom.org/index.php/Download
Licentietype:Voorwaarden (GNU/BSD/etc.)
Moderatie-faq Wijzig weergave

Reacties (5)

Bijzonder interessant vind ik dit.

Ik heb nog nooit van Open Watcom gehoord (toen ik het las dacht ik dat het gehackte drivers voor een modem betrof), maar ik ben nu spontaan benieuwd hoe goed deze compiler presteerd, vooral ten opzichte van GCC....
dus eigenlijk een opensource compiler voor C, C++ en fortran voor twee dode OS-sen en windows.

Leuk en aardig als curiosum, maar niet wereldschokkend lijkt mij.
Dat jouw wereld zo klein is, vind ik echt rot voor je.

Vanzelfsprekend laat ik je niet stikken. Hier een gouden tip: ga voor de grap naar school en leer eens wat zou ik zeggen.
watcom was altijd chill, betrouwbare zooi

toch houd ik het bij mingw met mn mooie devc ide :D

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True