| Hi,
The customer (same one!) wants to know...
I looked at the C example in SYS$EXAMPLES. The comments in
that example state that a 3 512-byte block is used to guarantee
space for an aligned 2 512-byte block which is made into a
buffer object. Is this the way one *should* do it? Give it
one more and let the services do the alignment? Or should we
ensure that the pages are aligned properly for Alpha systems?
Is either way acceptable/recommended?
He is finding that a call to $CREATE_BUFOBJ with inadr=00021400
returns retadr=00020000). The return address in the above is
aligned on an Alpha page boundary, but isn't the same address
as "inadr" -- though both address values are aligned on a 512-byte
boundary. Is this expected behavior?
Lastly, in .1:
>>The calling standard makes this "high level" vs "low level" language
>>discussion something best left up to the user to decide. As a general
>>preference, I tend to use higher-level languages in preference to Macro.
>>(The OpenVMS documentation also "encourages" the programmer to use
>>something other than Macro32.)
Can you give me a pointer to the reference?
Thanks,
Elin
|
| Re: .3
The doc. for $CREATE_BUFOBJ_64 says that start_va will be rounded _down_
to a CPU-specific page boundary (this is presently an 8K page on Alpha)
.3> Can you give me a pointer to the reference?
See, for example, Chapter 1 of "Migrating to an OpenVMS AXP System:
Porting VAX MACRO Code" manual in the OpenVMS Programmer's Shelf.
John.
|