![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: What are the considerations in porting C code from VAX to Alpha OpenVMS over DEC C compiler. Is it a straight recompile? Our application also use DEC's TCP/IP (UCX). Will it influence the port to Alpha? The Answer is : Documentation on porting from VAX C to DEC C is available in the DEC C for OpenVMS VAX documentation. In general, this port is usually little more than recompilation and relink. I would recommend porting from VAX C to DEC C on OpenVMS VAX, and then porting from OpenVMS VAX to OpenVMS Alpha. Both VAX C and DEC C can be licensed with a current "C" PAK, and both can be installed on the same system at the same time. The most common problems with porting the C code from OpenVMS VAX to OpenVMS Alpha tend to involve: o resolving various C coding errors and questionable coding practices. There are a number of constructs that the older compiler(s) did not tend to detect. o the use of the compiler builtins that are not also available on OpenVMS Alpha Various pragmas and RTL routines are available. o assumptions around the structure padding. This tends to come into play (only) when sharing data structures -- tyically via network packets or file records -- between OpenVMS VAX and OpenVMS Alpha systems. OpenVMS Alpha uses natural alignment for structure members, while OpenVMS VAX uses byte alignment the fields within a structure. One can use the member alignment qualifier and the associated member alignment pragma to override the defaults. And sometimes, the use of CC/DECC/STANDARD=VAXC can be useful when initially porting the code to DEC C.
|