Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

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

SOLVED
Go to solution
Arch_Muthiah
Honored Contributor

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

Hi,

Env:
I have application developed using Macro 64, C,and C++ for Alpha/OpenVMS. Now I want to run this applcation on I64/OpenVMS.

Application:
This system security related applcaiton accesses most of the System routines from MACRO 64, and RTL routines from C, and C++.

Questions:
I am going thru HP C release notes and I64/OpenVMS release notes. But I feel confident when I make sure from you-VMS gurus about any changed/new features relating to application and system programming in this version of I64/OpenVMS operating system

Your suggestions/findings would be appreciated.

Archunan
Regards
Archie
16 REPLIES
Ian Miller.
Honored Contributor
Solution

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

Which version of VMS alpha are you comparing VMS I6.4? V8.2 Alpha and I64 are nearly the same but as you have some MACRO64 then I assume you are doign some kernel mode code?

Have you read?
http://h71000.www7.hp.com/doc/82final/6673/6673PRO.html
http://h71000.www7.hp.com/doc/82final/5601/5601PRO.HTML

and
http://h71000.www7.hp.com/openvms/integrity/resources.html

There are differences but how much it matters depends on your code. Read the above and try building your app on VMS I64.
____________________
Purely Personal Opinion
Volker Halle
Honored Contributor

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

Archunan,

OpenVMS I64 and OpenVMS Alpha (since V8.2) are being built from the SAME sources. There are - of course - architecture specific differences, but most of the code is absolutely common.

In general, the advice is to first upgrade to the latest compilers on OpenVMS Alpha V8.2 and build your application. This makes sure, that your application builds with the latests compilers and you don't 'blame' OpenVMS I64, if something doesn't work.

Then take your sources to OpenVMS I64 and build them there. It should be easy. The feedback from the OpenVMS Itanium porting workshops is usually excellent.

You say your application includes MACRO-64 code, did you really write Alpha assembler instructions ? Couldn't this be MACRO-32 instead ? Which is the VAX MACRO-32 code and a compiler on both Alpha and I64 (invoked with MACRO/MIGRATE).

Volker.
Arch_Muthiah
Honored Contributor

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

Ian Thanks.

Sorry for the incomplete info. Yes, my Belgium based customer wants to run our VMS security application both on Alpha/OpenVMS V7.3 and I64/OpenVMS V8.2.


Volker,
The initial MACRO source was in VAX MACRO 32, we have already ported to Alpha. Now we are using Marco64 to assemle those code.

I am really expecting the solutions/ suggestions from you members, I always trust as I belive you might have faced this type issues in your long ways.

Thanks
Archunan
Regards
Archie
Volker Halle
Honored Contributor

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

Archunan,

re: MACRO-32/MACRO-64

Porting a VAX MACRO source file to Alpha and compiling it using $ MACRO/MIGRATE does not make it MACRO-64.

MACRO-64 is the native Alpha assembler and only very few (typically performance-critical) modules in OpenVMS Alpha are written in MACRO-64. I would not expect 'applications' to be so hardware-dependant, that you would have to use Alpha machine language.

Volker.

Arch_Muthiah
Honored Contributor

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

Volker,

We have ported MACRO 32 to MACRO 64, we have done so much modification while porting to Alpha/OpenVMS. This part is OK.

Now as we are again moving the same application which is running fine in the ALPHA/OpenVMS to I64/openVMS.

You already said it won't require any modification in macro or RTL lib.

Although I64 and Alpha both are 64 bits platform, I curious to know that would I need to touch the sources for any modifications when I move the application to I64/OpenVMS 8.2. The conversion is Aplha/OpenVMS 8.2 to I64/OpenVMS 8.2.

You and Ian already assured that the Alpha/OpenVMS 8.2 code should work in I64/OpenVMS 8.2 if I have loaded all latest Libraries. May I take this as a final suggestion?


Archunan

Regards
Archie
Robert Gezelter
Honored Contributor

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

Archunan,

As was already noted, MACRO-64 is direct written ALPHA instructions, not the case of MACRO-32 compiled using the MACRO-32 compiler to run on ALPHA. In the case of MACRO-32, the equivalent tool exists for IA-64.

Providing you are using no machine specific features (e.g., code that relies on the details of exception handing), you should have little or not problems simply recompiling the code. If you are using older compilers, it is strongly recommended that you recompile using current compilers on ALPHA (to remove language compatibility changes) before compiling it for IA-64.

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

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

Bob/Volker/Ian,

I think I missed few info,

1. Our intial code was written for VAX using VAX MACRO32.

2. We have ported this MACRO 32 to Alpha/OpenVMS 8.2 after did so much modification.

3. So now we have two sources, one for VAX/OpenVMS (MACRO 32) and one for Alpha/OpenVMS8.2 (MACRO 64).

We are able to build and the application is running fine at this moment on Alpha and VAX.

But now we want to run this application on I64/OpenVMS 8.2.

As Bob said, if MACRO 64 source for Alpha is Alpha machine dependant, then I can not use this MACRO 64 source to be assembled on I64. Isn't it Bob?

You mean that it requires another porting work ?. That is porting VAX MACRO 32 source to I64/OpenVMS 8.2 using seperate I64 assembler?. So I should take VAX Macro 32 source as the base version? not MACRO 64 (alpha) source as the base version for porting to I64?.

Could you please clarify this?


Archunan
Regards
Archie
Robert Brooks_1
Honored Contributor

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

It's quite simple; there is no Macro-64 compiler for OpenVMS I64.

I can state with almost 100% certainty that
rewriting your application to use IAS is will be among the worst choices you could make.

OpenVMS I64 itself contains an awful lot of Macro-32 code that is simply compiled for I64 -- the shadowing driver, for example, ported from Alpha to I64 with only a single(!) change.

What, exactly, are you doing such that you think you need to use a very low-level language?

Does your application have intimate knowledge of the calling standard?

Also, you make reference to the calling of "system routines"? Are you referring to system services and/or RTL routines, or are you talking about routines that have an entry in sys$loadable_images:sys$base_image.exe -- these routines are prefixed with exe$, sch$, ioc$, etc . . .

Does any of your application operate at an IPL greater than 0?

-- Rob
John Gillings
Honored Contributor

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

Archunan,

Sorry to belabour this point. MACRO64 is a VERY, VERY specialised assembler. I'm having trouble believing you'd be using it. You don't "port" MACRO32 code to MACRO64. They're very different languages.

Could you please post a few lines of code from your MACRO64 module, just to convince me that it's really MACRO64 and not MACRO32.

This is CRITICAL to your question. If it's MACRO32 then porting to IA64 is potentially just compile and go. If it's MACRO64 then you will need to rewrite it from scratch. Since there is no IA64 assembler, it will need to be written in C or MACRO32.
A crucible of informative mistakes
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