[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::macro

Title:VAX MACRO assembler issues
Moderator:TLE::TROWEL
Created:Mon Mar 30 1987
Last Modified:Wed Jun 04 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:257
Total number of notes:916

246.0. "Calling Fast I/O services from MACRO?" by CSC32::HENNING (A rose with no thorns) Tue Dec 31 1996 13:18

T.RTitleUserPersonal
Name
DateLines
246.1See _OpenVMS Alpha Guide to 64-bit Addressing_XDELTA::HOFFMANSteve, OpenVMS EngineeringTue Dec 31 1996 17:1561
246.2CSC32::HENNINGA rose with no thornsThu Jan 02 1997 09:532
246.3A few more questions pleaseBSS::E_VAETHMon Jan 27 1997 13:0931
    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
246.4COMEUP::SIMMONDSlock (M); while (not *SOMETHING) { Wait(C,M); } unlock(M)Mon Jan 27 1997 21:2311
    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.
246.5thanksBSS::E_VAETHTue Jan 28 1997 12:541
    thanks,