HP UX Developer Tools manual Compiler Conventions

Page 48

HP-UX Architecture Conventions

Compiler Conventions

the return link either in a register or on the stack. Also, it can determine the previous stack pointer by subtracting the current procedure's stack frame size.

The Assembler requires that you follow programming conventions to generate unwind descriptors. The beginning and end of each procedure must be noted with the .PROC and .PROCEND directives. The .CALLINFO directive supplies additional information about the procedure, including the stack frame size. The Assembler passes this information to the linker, which creates the unwind descriptor. It can also generate the standard entry and exit code to create and destroy the stack frame, save and restore the return link (if necessary), and save and restore any necessary registers. These code sequences are generated at the points indicated by the .ENTER and .LEAVE pseudo-operations. For a more thorough discussion of programming conventions, refer to the 64-bit Runtime Architecture for PA-RISC 2.0, at URL: http://www.software.hp.com/STK/.

Arguments to procedures are loaded into general registers 26, 25, 24, and 23; these registers are named, respectively, %arg0, %arg1, %arg2, and %arg3. If more than four words of arguments are required, the remaining arguments are stored in the caller's stack frame in the variable argument list. The return value should be returned in general register 28, called %ret0. General register 29, called %ret1, is used for the low-order bits of a double-word return value, while %ret0 contains the high order bits. In addition to the argument and return registers, the procedure can use registers 19 through 22 and registers 1 and 31 as scratch registers. Any other general registers must be saved before use at entry and restored before exit.

Chapter 4, “Assembler Directives and Pseudo-Operations,” on page 53 contains detailed descriptions of the Assembler directives described above. For a more thorough discussion of the procedure calling conventions, refer to the topic PA-RISC Architecture at URL: http://www.software.hp.com/STK/.

In order for an assembly language procedure to be callable from another language or another assembly language module, the name of the procedure must be exported. The .EXPORT directive does this. It also allows you to declare the symbol type. For procedure entry points, the symbol type should be ENTRY.

The Assembler and linker treat all symbols as case-sensitive, while some compilers do not. By convention, compilers that are case-insensitive uniformly convert all exported names to lower case. For example, it is

48

Chapter 3

Image 48
Contents HP 9000 Computers 92432-90012 JuneLegal Notices Restricted Rights LegendHanover Street Palo Alto, California Contents Assembler Directives and Pseudo-Operations Contents Contents Contents Contents Pseudo-Instruction Set Assembling Your Program Diagnostic Messages Programming ExamplesIndex Preface Printing HistoryEdition Date Software Version Audience Related DocumentationTypographical Conventions This ManualSummary of Technical Changes for HP-UX Assembly Language Assembler FeaturesAssembler Features Summary of Changes for PA-RISC Summary of Changes for PA-RISC 2.0W Wide Mode, 64-bitSummary of Changes for PA-RISC ChapterSummary of Changes for PA-RISC 2.0W Wide Mode, 64-bit Program Structure Program Structure Label Opcode Operands CommentsSymbols and Constants Symbols and ConstantsInteger Constants Signed Unsigned Registers and Register Mnemonics Registers and Register MnemonicsRegisters by using an L or R suffix General Registers Single-Precision Floating-Point Registers Double-Precision Floating-Point Registers Space RegistersControl Registers Synonyms Register Procedure Calling Conventions Register Synonyms DescriptionExpressions ExpressionsStandard Arithmetic Operators Operator OperationLegal Combinations For Relocatable Terms Operation Result Available Field Selectors Meaning Field Meaning Selector Multiple of 2048 allows a three-instruction sequence Parenthesized Subexpressions Operands and Completers Operands and CompletersAddi Macro Processing Defining New Instructions With MacrosMacro Processing Contains general register 19, or binary 10011. These HP-UX Architecture Conventions SpacesSpaces Memory Layout on HP-UX Sr4 Sr5 Sr6 Subspaces AttributesSubspaces Directives Standard Subspaces and Sort KeysSpace Subspace Sort Key Use Sections in 64-bit Mode Sections in 64-bit Mode$INIT$ Location Counters Location CountersCompiler Conventions Compiler ConventionsCompiler Conventions Global Symbol Usage Mfctl Assembly Listing Shared LibrariesShared Libraries Assembly Listing Introduction Assembler DirectivesDirective Function Requests common storage for a specified number Bytes Pseudo-Operations Directive Function Reserves 16 bits a half word of storage Align Directive SyntaxParameters ExampleAllow Directive DiscussionAllow Directive To the .LEVEL specified for the file Block and .BLOCKZ Pseudo-Operations Block and .BLOCKZ Pseudo-OperationsSpace $TEXT$ Subspa $CODE$ Block Byte Pseudo-Operation Byte Pseudo-OperationByte initvalue , initvalue Call Directive Call DirectiveCall argumentdescription argumentdescription Form of argument-description is Arg=location Where arg can Return value for a procedurefirst word in the argument list Second word in the argument listLIT Align Word Procend Export Callinfo Directive Callinfo DirectiveCallinfo parameter , parameter Register ENTRYSR= Unwound It restores the RP value when it encounters a .LEAVE Callinfo Directive Stack Frames Re-enter code subspace Comm Directive Comm DirectiveLabel .COMM numbytes Label Labels the location of the reserved storageCopyright Directive Copyright DirectiveCompany-name Proc Callinfo Enter Integer .fraction E power Fraction E powerDouble Pseudo-Operation Double Pseudo-OperationDword Pseudo-Operation Dword Pseudo-OperationDword initvalue , initvalue END Directive END DirectiveEndm Directive Endm DirectiveEnter and .LEAVE Pseudo-Operations Enter and .LEAVE Pseudo-OperationsSpace $TEXT$ Entry and .EXIT Directives Entry and .EXIT DirectivesSymbolicname .EQU value EQU DirectiveEQU Directive ValueExport Directive Export DirectiveArgument Export proc,ENTRY,ARGW0=GR Float Pseudo-Operation Float Pseudo-OperationHalf Pseudo-Operation Half Pseudo-OperationHalf initvalue , initvalue Import Directive Import DirectiveNOP END Label Directive Label DirectiveLabel labelid Labelid Names the label identifierLevel Directive Level DirectiveLevel Directive Listoff and .LISTON Directives Listoff and .LISTON DirectivesListon Code Space $TEXT$ SPNUM=0,SORT=0 Subspa $CODE$ Locct Directive Locct DirectiveMacro Directive Macro DirectiveLabel .MACRO formalparameter,formalparameter Examples 100 Origin Directive Origin DirectiveChapter 101 Proc and .PROCEND Directives Proc and .PROCEND Directives102 Chapter 103 REG Directive REG DirectiveLabel .REG typedregister Label User-defined register nameShlibversion Directive Shlibversion DirectiveChapter 105 Space Directive Space Directive106 Chapter 107 Spnum Pseudo-Operation Spnum Pseudo-Operation108 String and .STRINGZ Pseudo-Operations String and .STRINGZ Pseudo-OperationsChapter 109 110 Subspa Directive Subspa DirectiveName An identifier that names the current subspace Chapter 111112 Chapter 113 Version Directive Version Directive114 Word Pseudo-Operation Word Pseudo-OperationWord initvalue , initvalue Chapter 115Directive Space Name Default Parameters Programming AidsProgramming Aids Predefined Subspace DirectivesShortdata Chapter 117Programming Aids 118 Pseudo-Instruction Set 119120 Compare and Branch Conditions Comb and Comib Cond DescriptionChapter 121 Add and Branch Conditions Addb and Addib Description 122Invoking the Assembler 123Using the as Command Using the as CommandAssemble code for the architecture 124filename LevelChapter 125 Wnumber Tables, see HP-UX Linker and LibrariesOnline User Guide 126Using the cc Command Using the cc CommandPassing Arguments to the Assembler Wa, ,as-argument as-argumentCpp Preprocessor 128Programming Examples 129Binary Search for Highest Bit Position Binary Search for Highest Bit Position130 Chapter 131 Copying a String Copying a String132 Chapter 133 Dividing a Double-Word Dividend Dividing a Double-Word Dividend134 Programming Examples Chapter 135Demonstrating the Procedure Calling Convention Demonstrating the Procedure Calling ConventionProgram Listing 136Assembly Program Listing Chapter 137Output of the cc -S Command Assembly Program Listing From the C CompilerOutput of the cc -S Command 138Chapter 139 Output of the cc -S Command 140 141 Option operand 142Chapter 143 Reserve 144Wrong register type used Use a general registerChapter 145 Use a space register Use a control register146 Chapter 147 148 Chapter 149 150 Chapter 151 Used to invoke the assembler 152Chapter 153 Error Messages Error Messages154 Chapter 155 156 Chapter 157 158 1027 10281029 10301031 10321033 10341035 10361037 1038162 Chapter 163 1054 10551056 1057Chapter 165 166 Chapter 167 168 Format keyword=value 10801081 1082170 1088 10891090 Chapter 1711091 10941095 10961097 10981099 11001101 11021103 11041105 Chapter 175Panic Messages Panic Messages176 2005 20062007 2008User Warning Messages User Warning Messages178 7003 70047005 7006180 Chapter 181 182 Limit Error Messages Limit Error Messages7200 72017202 72037204 184Diagnostic Messages Chapter 185186 Branching Error Messages Branching Error MessagesChapter 187 188 Chapter 189 190 Chapter 191 192 7827 78287834 78357836 7837Expr 194Index Index 195196 NumericsIndex 197 Copyright198 HP C/HP-UX,49Index 199 Mfctl200 DoubleIndex 201 See also memory202
Related manuals
Manual 29 pages 37.9 Kb Manual 44 pages 5.6 Kb Manual 2 pages 37.54 Kb