HP UX Developer Tools manual Legal Combinations For Relocatable Terms Operation Result

Page 30

Program Structure

Expressions

Expressions produce either an absolute or a relocatable result. Any operation involving only absolute terms yields an absolute result. Relocatable terms are allowed only for the + and - operators. The legal combinations involving relocatable terms are shown in “Legal Combinations For Relocatable Terms” on page 30.

Table 2-10

 

Legal Combinations For Relocatable Terms

 

 

 

 

 

 

 

 

 

 

Operation

 

Result

 

 

 

 

 

 

 

 

 

Absolute + Relocatable

 

Relocatable

 

 

 

 

 

 

 

 

 

Relocatable + Absolute

 

Relocatable

 

 

 

 

 

 

 

 

 

Relocatable - Absolute

 

Relocatable

 

 

 

 

 

 

 

 

 

Relocatable - Relocatable (defined locally)

 

Absolute

 

 

 

 

 

 

 

 

For more information on the term relocatable, refer to “Assembler

 

 

Features” on page 15.

 

 

 

 

The combination “relocatable-relocatable+relocatable” is not permitted.

NOTE

 

 

 

For example, assume the symbols MONTH and YEAR are relocatable, and

 

 

 

 

JANUARY and FEBRUARY are absolute. The expressions MONTH+JANUARY

 

 

and MONTH+FEBRUARY-4are relocatable, while the expressions

 

 

YEAR-MONTHand FEBRUARY-4are absolute. The expression

 

 

MONTH+JANUARY*4 is also legal and produces a relocatable result,

 

 

because JANUARY*4 is evaluated first, producing an absolute

 

 

intermediate result that is added to MONTH. The expression MONTH+YEAR

 

 

is illegal, because the sum of two relocatable terms is not permitted.

Because all instructions are a single word in length, it is not possible to form a complete 32-bit address in a single instruction. Therefore, it is likely that the Assembler (or linker) may not be able to insert the final address of a symbol into the instruction as desired. For example, to load the contents of a word into a register, the following instruction could be used:

LDW START,%r2

Because LDW provides only 14 bits for the address of START, the Assembler or linker prints an error message if the address of START requires more than 14 bits. There are two instructions, LDIL and ADDIL, whose function is to form the left-most 21 bits of a 32-bit address. The succeeding instruction, by using the target of the LDIL or ADDIL as a

30

Chapter 2

Image 30
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-RISCSummary of Changes for PA-RISC 2.0W Wide Mode, 64-bit 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 DescriptionStandard Arithmetic Operators ExpressionsExpressions 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 Parameters Align DirectiveSyntax 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 first word in the argument list Form of argument-description is Arg=location Where arg canReturn value for a procedure 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 Label .COMM numbytes Comm DirectiveComm Directive Label Labels the location of the reserved storageCopyright Directive Copyright DirectiveCompany-name Proc Callinfo Enter Double Pseudo-Operation Integer .fraction E powerFraction E power 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 DirectivesEQU Directive Symbolicname .EQU valueEQU 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 labelid Label DirectiveLabel Directive 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 Label .REG typedregister REG DirectiveREG Directive 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 Name An identifier that names the current subspace Subspa DirectiveSubspa Directive Chapter 111112 Chapter 113 Version Directive Version Directive114 Word initvalue , initvalue Word Pseudo-OperationWord Pseudo-Operation Chapter 115Programming Aids Directive Space Name Default ParametersProgramming 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 123Assemble code for the architecture Using the as CommandUsing the as Command 124filename LevelChapter 125 Online User Guide WnumberTables, see HP-UX Linker and Libraries 126Passing Arguments to the Assembler Using the cc CommandUsing the cc Command 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 135Program Listing Demonstrating the Procedure Calling ConventionDemonstrating the Procedure Calling Convention 136Assembly Program Listing Chapter 137Output of the cc -S Command Output of the cc -S CommandAssembly Program Listing From the C Compiler 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 1029 10271028 10301033 10311032 10341037 10351036 1038162 Chapter 163 1056 10541055 1057Chapter 165 166 Chapter 167 168 1081 Format keyword=value1080 1082170 1090 10881089 Chapter 1711095 10911094 10961099 10971098 11001103 11011102 11041105 Chapter 175Panic Messages Panic Messages176 2007 20052006 2008User Warning Messages User Warning Messages178 7005 70037004 7006180 Chapter 181 182 7200 Limit Error MessagesLimit Error Messages 72017204 72027203 184Diagnostic Messages Chapter 185186 Branching Error Messages Branching Error MessagesChapter 187 188 Chapter 189 190 Chapter 191 192 7834 78277828 7835Expr 78367837 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