Operating System - OpenVMS
1753701 Members
4942 Online
108799 Solutions
New Discussion юеВ

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

 
SOLVED
Go to solution
Willem Grooters
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

MACRO is essentially an assembler. Any assembler is strictly limited to the processor achitecture it's designed for: MACRO32 to VAX and MACRO64 to Alpha. Each will use the calling standard, registers, opcodes and addressing, and arithmatic functions for that processor. Each will produce machine code to be executable on that particular architecture.
In the transition from VAX to Alpha, MACROS32 was "promoted" to be a compiler, so it would produce code executable on Alpha, like any other compiler.
MACRO64 is the native Alpha assembler, and as you have found, you had to rewrite the code. Not surprisingly given the (huge) achitectural differences between the procesors and a completely different instruction set.
Since MACRO64 is an ALPHA assembler, it won't be of any use on Itanium - for the very same reason: It is a completely different architecture. You will have to rewrite your MACRO code from the ground up, in C / C++ or any other language since there is no I64 macro - or use the original MACRO32 code (which will need some adaption) and use the MACRO32 compiler on Itanium.

There are quite a few things VERY different on Itanium: Register assignment, calling standards, stack usage, you name it. Most differences are covered by the compilers so you won't have to bother too much. But you need to familiarize yourself with the architecture and porting issues.

Willem
Willem
Willem Grooters
OpenVMS Developer & System Manager
Ian Miller.
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

If you have taken MACRO32 and compilied it on alpha VMS using the AMACRO compiler
(parhaps you could post the build command line you use?) then you probably added various directives and made some other changes. This modified code will probably compile on VMS I64 using the IMACRO compiler unless it touches on the areas mentioned (calling standard, register usage and so on) in which case it will need changes. This is covered in the previously mentioned manuals.

You should also re-evalulate if MACRO32 is the best implementation language. You can do a lot of VMS system programming in C (or even BLISS and I'm not going to argue which is better :-)

Various internal routines have changed but VMS Engineering have done a remarkable job in keeping even the internal undocumented interfaces compatable, so a lot of the internal routines are the same.
____________________
Purely Personal Opinion
Martin Vorlaender
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

Guy Peleg had a talk about porting applications to I64 at the German Tech Update Days last year and this year.

The baseline was: Porting user apps is easy, the most common pitfalls being conditionalized code and floating point, as well as some other (suprisingly few) more obscure things.

cu,
Martin
Arch_Muthiah
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

Hi Robert Brooks/John Gillings/Willem Grooters/Ian Miller/Martin/Volker

Thanks for all your valuable timings and suggestions. I realized your timings, the kind attention on understanding / analyzing my question, and your long - valuable writeup to clear my doubts. If there is any option to give more points than just 10, I would certainly glad to do that. I am happy to know that there are still lot more VMS gurus to give solutions, that too in MACRO - the heart of the first Virtual Operating System (the great OpenVMS!!!!!!!!!!!).


Robert Brooks/John Gillings:

As I mentioned earlier, we did not write any seperate MACRO 64 source code. After I read your suggestion, I understood it is very very tough job writing MACRO 64 code for alpha. While I see the MACRO source code we have on Alpha and VAX system (dated back in 1990 - 1996), I understood that the team involved in porting, have tried to create Alpha objects using "$ macro/migrate VAX_MACRO_32.MAR"; It looked like they got so many errors, so they had -modified- "VAX MACRO 32" source with alpha compatibility, and kept those sources as VAX_MACRO_32_source.MAR (not .M64 files) in Alpha and unmodified MACRO 32 source in VAX. That's why I mentioned that we have two MACRO source.

Ian/Williem:
Looks you both have difft opinion in using Alpha MACRO source in I64. The code I have on Alpha is MACRO-32.MAR only with little modification such as adding appropriate entry-point directives (ex .EXCEPTION_ENTRY,,,etc.) for Alpha. I have attached a portion of code from one of my macro source.

The compile cmd from build process...
"macro/debug/lis/obj=obj:stk_account common+account+account_defs+uaf_access_defs+stk_account"

Ian:
The major functions of this application are applying security policies, monitor and enforce the compliance throughout the VMS cluster Env. For this, the MACRO code calls most of the system services ( $qio, $quo, $UAF, $getsyi, $getjpi, $getdvi,,,etc) to retrieve the access priv, and prio setting on various system ressources. Right now we don't have any plan of re-writing this MACROs in C or C++.

As per all your suggestions, We keep this VAX MACRO sources as it is. And we are going use MACRO compiler on both Alpha and I64.

Archunan
Regards
Archie
Arch_Muthiah
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

Thanks for all of you. let me close this now temporarily.


Archunan
Regards
Archie
Robert Gezelter
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

Archunan,

I was on a busy travel schedule for the last several weeks, so I did not have the time to expand on my reply earlier.

There is a high likelihood that your Alpha sources will compile vitually unchanged for IA64 using the MACRO32 compiler. The major changes would be in any conditionalization that checked explicitly for the ALPHA (and should now probably check for 64 bit).

It is also likely that you can "back port" the ALPHA macro code to compile on the VAX with little effort. A check to determine the detailed nature of the changes should not be a hard job. With the exception of certain fault handling, which is inherantly machine sensitive, there are straightforward ways to deal with the differences without the need for massive edits.

- Bob Gezelter, http://www.rlgsc.com
Arch_Muthiah
Honored Contributor

Re: Are there any big changes between Alpha/OpenVMS and I64/OpenVMS

Thanks Bob,

I am wondering how could you able to spend your valuable time on this forum and its members' queries.

Whenever I have time, I love to go to your website to read your VMS related consulting and presentation related pages. It is impressive and great informative!!!.

http://www.rlgsc.com/openvms/openvms.html

I hope every members of this forum must have already gone thru your presentations and the vast VMS related consulting work you are providing from 1978 onwords.

Wishing you all members "A HAPPY THANKSGIVING DAY" and I am already happy for being a member in this great "parentofotherOS" forum with the members like Bob.

Archunan
Regards
Archie