Home

motorola digital signal processing development software

image

Contents

1. pue eoeds Buipoou3 ues 2 9361996 00100000 OL 249 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT ssoJppy 8 00000000 anfi uonoes Jppee uonoes aasnwNn ed aasnwNn 83809 ed 099676 7 7201 96996 6 01 7201 2 34343443434 14600000 34444444 60700000 14600000 00700000 00000000 uelis v0t00000 00700000 00000000 X 814 uonnjo uoo uonej au102 use 87 90 91 20 60 68 0071 5 55010 ODLEW 00096450 L10100 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 250 Appendix D ASSEMBLER LISTING FILE FORMAT 1 00700000 ssoJppy ssoJppy penunuoo p q anbi qasnNn 3009 leqe ed qasnNn uonoeg ed 982 96 627 444344444 01 60000000 pu3 962 96v62v 444344444 pu3 v0000000 00000000 uelis d 00000000 uelis 1 814 0
2. 87 90 91 20 60 68 0071 uoisJeA 55010 00096450 LION 251 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT uode uonezin S gp Q1 Lp cp s gp p X OP ZP 5 9 s pp 0J x Lp zp 5 5 01 s gp pJ x 5 01 Lp pJ u sppeq op 1 V20L X o d 0 4 0 006 uonnjoAuoo uone au02 LZ OZY ZEL pu 5 19 19 19 Sp Sp 610 nbe enu oDed doo pua doo yes Jppeq MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 252 MOTOROLA DSP OBJECT FILE FORMAT COFF E 1 INTRODUCTION The Motorola DSP assembler and linker produce a binary object file in a modified form of the AT amp T Common Object File Format COFF COFF is a formal definition for the struc ture of machine code files It originated with Unix System V but has sufficient flexibility and generality to be useful in non hosted environments In particular COFF supports user defined sections and contains extensive information for symbolic software testing and debugging Later sections describe the COFF implementation for the Motorola family of digital signal processors The DSP COF
3. 230 EDITOR TENTER 24 hardware 307 309 311 S 25 MOSS basti dard 307 PN SLAP E vi 23 71 86 installation 1 308 309 311 bea ee ee edis n ama 22 23 Mode DDR ae Nor Bead 136 PEs ig seg vated LES ee 71 87 88 operation 1 308 310 312 Td 23 aed dame s ERE 6 139 Move OME 71 76 OUMU ades ues 18 M xad dde 11 77 processing 9 Qr PI EP 24 71 90 VEIDOSC uo dvd 8 C PPP 23 71 89 WAarnINg 146 192 RE olo dE ME AE M ded 24 Assembly language 1 EU Codes aie iced 24 by atin 24 71 91 LT EIE 24 Bootstrap mode 57 aet iX qu EE 23 10 Arr 71 80 address 95 71 85 49 71 78 end 02 22 116 rer PPM MD 24 71 82 ctr cles a ners Aided E 24 ll O Checksum 141 142 oe COFF ee excog d A Command line
4. a ere E Rte 253 E 3 OBJECT FIEE GOMPONEN TS 9 ben Gaels Ge ba cues 255 E 3 1 File Header susada ri tan a 255 3 2 Optional Header areena 256 E 3 3 SOCHONS 2 bon nod thet os die toin 258 E 3 3 1 Section 6 os icu S oe Por Ead VS Blo walter od tans 259 E 3 3 2 Relocation Information 261 3 3 3 Linie N mb6rS 22 262 3 4 Table isos yates oe Aides etre ron 263 4 1 Symbol Namee 5 Sx 265 3 4 2 Value as toe Due tai eee Lt AME 265 E 3 4 3 Section INNBUmbDOE duo deo pi eret ERREUR 266 E 3 4 4 Symbol Type X 266 E 3 4 5 Symbol Storage Class 268 E 3 4 6 Auxiliary Entries 272 DSP ASSEMBLER REFERENCE MANUAL ix TABLE OF CONTENTS Continued Paragraph Page Number Title Number E 3 4 7 Object File Comments 279 E 3 5 Sting Ttable Rc 279 4 DIFFERENCES IN DSP OBJECT FORMAT AND STANDARD COFF 279 E 4 1 Multiple Memory Spaces 280 E 4 2 Object File 281 E 4 3 Structure Size Fiel
5. nl MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 113 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Note that the lines DUPF NUM 0 7 ENDM will only be shown on the source listing if the MD option is enabled The lines MOVE 0 RO MOVE 0 R1 MOVE 0 R2 MOVE 0 R3 MOVE 0 R4 MOVE 0 R5 MOVE 0 R6 MOVE 0 R7 will only be shown on the source listing if the MEX option is enabled See the OPT directive in this chapter for more information on the MD and MEX options EEE 114 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES END End of Source Program END lt expression gt The optional END directive indicates that the logical end of the source program has been encountered Any statements following the END directive are ignored The optional ex pression in the operand field can be used to specify the starting execution address of the program lt expression gt may be absolute or relocatable but must have a memory space attribute of Program or None The END directive cannot be used in a macro expansion A label is not allowed with this directive EXAMPLE END BEGIN BEGIN is the starting execution address MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 115 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ENDBUF End Buffer ENDBUF The ENDBUF directive is used to signify the end of a buffer block The runtime location counter will remai
6. 1euuoJ Buns Jejquiessy q 4 QM Qm Ig IM giqe 1 M 14 lt 8 8 lt 19 14 lt 8 9 lt Awieung lt me lt lt Je 712 L 721 g suuod 881 181 981 981 vst 28 28 18 081 641 841 22 91 92 vl ZL ZA 1334 1 ul 29 00 81 20 20 68 00 1 550 0 00096dSA LION 243 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT 1euuoJ Buns Jejquiessy q 4 0 24 0002 0 002000004 22200000 ssed pue op 18000 10 402000004 202 00 0200000 4 202 181 76094880 602000004 102 82924880 802000004 002 890 3980 120000004 661 88444400 902000004 861 0 16000800 902000004 1461 2 215 0 00800 02000004 961 00800 lt 02000004 961 eJ ejeps v2000800 202000004 761 6 0 2 6 sulod 16200800 102000004 661
7. 144 GJ rase tal a 140 146 NOBDEJX Rer d 144 SVO dba Sur d e 141 NODLD S eL 144 SYMBOL DESI eek oa 140 NOBXL 144 Rests acts a dae 140 146 NOPG ou sua d tra saber 144 IPIS OU IER 140 146 ch hole teh RIA 144 rc 140 146 NOFM MM Seas 144 teet atur qa ian OR C 146 42644 E ad a EE 144 NALE sie du hoa ei Ce uc 140 146 o n 144 140 146 we 144 9 47 54 uu end eee 144 bootstrap 57 NOM D 144 144 P 144 Processor NOMSW 144 FOVISION 6 7 144 Program counter 86 147 NONS ob 144 144 144 Relative 19 aaa td 144 Relative 10 NORG trend 144 4 NORP LLL 144 Relocation 261 282 Runtime address 10 318 DSP A
8. 28 MSB 28 35 27 35 e a 57 Macro Bik 61 POW 26 35 36 DESCR ar 64 143 comment 142 EEE 316 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA definition 62 135 143 22 quts vin eat 135 CTI MERE he tk DEREN 118 OXI 121 expansion 64 143 DPF DENT 6 62 134 143 153 Macro argument concatenation operator 65 78 local label override 68 local label override operator 82 return hex value operator 67 81 return value operator 66 80 string operator 67 Memory ea dd ER ERE 126 132 IOSBIVO 145 utilization 18 143 237 9 143 147 attribute Pre oles 19 zy Object file 3 auxiliary entry 272 comment 100 279 283 data expression 283 cssc 279 header 255 253 1 127 line number 262 optional header
9. 59 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY 5 1 MACRO OPERATIONS denke Pe d eur CIE CEDERE ES 61 5 2 MACRO LIBRARIES dnd ed RE bed EARN TER stus 62 5 3 MAGRO DEFINITION is eer eee 62 5 4 MACRO cis ide qeu QE EPOR ie dE 64 5 5 DUMMY ARGUMENT 5 65 5 5 1 Dummy argument concatenation operator 1 65 5 5 2 Return value 66 5 5 3 Return hex value operator 67 5 5 4 Dummy argument string operator 67 555 Macro local label override operator 7 68 5 6 DUP DUPA DUPC DUPF DIRECTIVES 69 5 7 CONDITIONAL ASSEMBLY HRS hee e 69 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES 6 1 INTRODUCTION MI 71 6 2 ASSEMBLER SIGNIFICANT CHARACTERS 71 6 3 ASSEMBLER DIRECTIVES RU LEY ha Waa haces ates 72 6 3 1 ie pe hoi eaten ts uw Lente 72 6 3 2 Symbol Della bane tate ee Gly ae ee EA 73 6 3 3 Data Definition Storage Allocation 73 6 3 4 Listing Control and 5 73 6 3 5 Object File GCODITOL s es t vet ae
10. 256 relocation 261 282 Section 258 section number 266 storage 5 5 268 Structure 253 structure size 282 SYMBOL dT hard 146 164 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL symbol 265 symbol table 263 symbol type 266 symbol value 265 transportability 281 Operand 2 field 17 Operand field 17 Operation 2 field 17 Operation field 16 C TERT 22 Stree wd or ico 23 DIIWISB an he Mae tod AS 24 logical 25 precedence 25 relational 24 SHIM a 23 UNE a mE c 22 Option AE du vieta t rM OE as 140 141 assembler operation 141 CG ios pda AO ie te ead lag 141 lr 140 141 E diam 141 140 141 OIM t lw 141 142 CONST Sd eror 141 142 bb kite eu 142 141 142 fart 140 142 at 140 142 es 141 142 d uw MES 140 142 PO e koe ne ES 139 142 EE
11. 26 30 Gr ue 27 38 sie cad ate 28 30 bic MT CPC 26 38 GME MN c 27 31 ev e 27 31 I 5 27 31 5 129 28 31 EXP ehh bh eh 28 31 L FED fod Se EDI 27 32 FLR 26 32 PERSE 15 locals 15 63 68 143 146 27 32 6 Label field 15 28 32 6 Line continuation 78 MEM MN E NE 26 32 Line number 262 28 33 i Listing file 5 18 143 LEN aie omm 27 33 commentary 235 qeu 27 33 LNG 27 33 cross reference 237 re ee ee format 133 142 145 151 165 235 THEMES 26 34 sub title 163 EEA E ct ET 28 34 etch the 166 ED uu stark Gene te oe Load address osse 9 MAG oos at ew Es 27 34 Load location counter 10 Pm 27 Load memory space 9 10 mathematical 26 eum 15 26 34 o ND METH RD 16 MIN eae A ema Location counter 86 147 miscellaneous
12. 55040 0009684 LIOIN 245 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT 1euuoJ Buns Jejquiessy q 4 pus ssed pua l Lp ou op ISI 916 pua 5 2 5 0 02 pua S p L1 A gA X S pp s qnsppe Lp p ep Adwy s gp 0J s qnsj Op op ep duj s 9p L x 5 1 S pp 04 X S ppej pue Qu op S p L1 A Lp p ep 81792040 00022240 70092 267 1809656 88611824 AZD99AVA Vc808T63 62200000 08000VL0 14448296 51013 42200000 92200000 9 200000 00000 2c00000 d 26000000 d 12200000 02200000 31 00000 91200000 Lec oez 426 902 vee Lec 612 1334 ul use 15 00 91 20 20 68 00 UOISIaA 1 55010 000964501 LION MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 246 Appendix D ASSEMBLER LISTING FILE FORMAT 1euuoJ Buns Jejquiessy q 4 WdO1D 000
13. 1 INPUT eek hea 4 Absolute expression 19 Command line option 2 Absolute mode 3 10 T MOERORE SERERE 3 Address assignment 44 P 3 Addressing est n E 3 VOSSO ox bog do Sa ear Eee 89 oy 4 immediate 92 EW 4 PER EU 91 4 long immediate 94 CRECEN MCI 5 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 313 ER 5 Rr E 5 re edn aA 6 dietis ears a 6 SpA dtd Su ab redeo Sarai d aed 6 oU 7 ERES POOR OR 7 8 P GNI T 8 COMMEND unes tees e sans ona aues 101 76 object file 100 279 283 unreported 77 18 Conditional assembly 61 69 128 141 GonStanl vhs DEEP 21 P PUT 21 decimal bar Li Roe s 21 Pelle dde Pat 102 103 hexadecimal 21 Storage C Rd 97 SUING e 22 Cycle count 141 142 D Data DOCKS ene ES 283 Data hiding tee iesu s 40 Data transfer field 17 JOD 5 2
14. Enos 139 142 nies b i 139 142 141 142 141 142 HDR oats ae eas 140 142 IG ET 140 142 140 143 317 obti 141 143 49 144 VDB ee dto bre 141 143 NOSI 145 listing format 139 sco ter trece edt aed we 145 OU are aden 140 143 NOUR SW ad ax ao rft iow 145 MG Ae So A aah e 140 143 NOW a n oer s 145 de ac at ie a 140 143 INS riae trien vaa ae adi RAE 140 145 message 140 ur 139 145 MEX 140 143 PS Be eee ee 141 145 MWS ats 141 143 141 145 MSW CET 140 143 139 145 140 143 Gee e 140 uae ss oes 140 143 RP scura etat sa ara A 141 145 NOAE qd asa dut 143 nic d TCI 141 145 NOC Ce iron breite eek 143 D S Rs RE Si qid qug Et ie P 140 145 NOGENX Junius 143 So 140 145 us ee ey ord shen Scene PCS 143 SUO vos quia f EX 140 146 NOGL ete ok 143 iu tae Gees es 141 146
15. __ ___ ____________ 70 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES 6 1 INTRODUCTION This chapter describes the directives that are recognized by the Motorola DSP Assem bler The assembler directives are instructions to the assembler rather than instructions to be directly translated into object code In addition this chapter describes special char acters that are considered significant to the assembler 6 2 ASSEMBLER SIGNIFICANT CHARACTERS There are several one and two character sequences that are significant to the assembler Some have multiple meanings depending on the context in which they are used Special characters associated with expression evaluation are described in Chapter 3 Other as sembler significant characters are Comment delimiter Pe Unreported comment delimiter Line continuation character or Macro dummy argument concatenation operator 2 Macro value substitution operator 96 Macro hex value substitution operator n Macro local label override operator Macro string delimiter or Quoted string DEFINE expansion character Function delimiter Location counter substitution String concatenation operator Substring delimiter short addressing mode force operator Short addressing mode force operator gt Long addressing mode force operator Immediate addressing mode operator
16. 21 35 CONSTANTS eee E Pob dod la 21 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL V TABLE OF CONTENTS Continued Paragraph Page Number Title Number 3 5 1 Numero Constants EIS nue 21 3 5 2 Sting Constants eens a E eo EO 22 3 6 OPERATORS a T E REP QE E 22 3 6 1 Unary operators c 6 ons oiu eh nt nette iod eiie ree tele 22 3 6 2 Atithineuc operators esta x ac v exte eR a E Rari Vis 23 3 6 3 Shift 5 23 3 6 4 Relational 24 3 6 5 Bitwise 24 3 6 6 dees ed hee ieee as 25 3 7 OPERATOR PREGEDENGE 6e 25 3 8 FUNCTIONS s e Sac st au Sit ed dre 25 3 8 1 Mathematical Functions 34 21 eb bet ere aue ERE EE 26 3 8 2 Conversion PUNCHONG Mannan s Sees oder eres d EISE 27 3 8 3 String amp 27 3 8 4 Macro Functions 27 3 8 5 Assembler Mode Functions 28 Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 1 MF 39 4 2 SECTIONS nto at BAe te teda En senda
17. 68 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY fining a macro label called LOCAL and attempting to reference it as in the above exam ple In that case the macro local label override operator prevents the assembler from seeing the local label definition for that reference and an error would result 5 6 DUP DUPA DUPC DUPF DIRECTIVES The DUP DUPA DUPC and DUPF directives are specialized macro forms They can be thought of as a simultaneous definition and call of an unnamed macro The source state ments between the DUP DUPA DUPC and DUPF directives and the ENDM directive follow the same rules as macro definitions including in the case of DUPA DUPC and DUPF the dummy operator characters described previously For a detailed description of these directives refer to Chapter 6 5 7 CONDITIONAL ASSEMBLY Conditional assembly facilitates the writing of comprehensive source programs that can cover many conditions Assembly conditions may be specified through the use of argu ments in the case of macros and through definition of symbols via the DEFINE SET and EQU directives Variations of parameters can then cause assembly of only those parts necessary for the given conditions The built in functions of the assembler provide a ver satile means of testing many conditions of the assembly environment see Section 3 8 for more information on the assembler built in functions Co
18. ata t 71 BREAK 74 172 187 CONTINUE 74 173 187 ED OE 74 187 ENDE 74 187 ENDS do eer bete 74 187 ENDE um s 74 187 74 187 FOR Mc 74 174 187 74 175 187 LOOP 74 176 187 74 177 187 UNTIE s arth ar brad nts Ade 74 187 WHILE age ccrte teta 74 177 187 assembly control 72 185 BADDR 73 95 186 BOB XU 73 96 186 BSG ten ena eq uos a pedis 73 97 186 BSM ee as 73 98 186 BUFFER 73 99 186 74 100 187 COMMENT 72 101 185 data definition 73 186 ceras md ama bes 73 102 186 were ma 73 103 186 DEFINE 3 72 83 104 142 185 73 105 186 73 106 186 DSR 73 107 186 DUP sexu 69 74 108 187 DUPA Aes 69 74 110 187 DUPO Stoicos m fos 69 74 112 187 DURE 69 74 113 187 END s Be ee hot itn deed 72 115 185 END BUF 73 116 186 ENDIF 74 117 187 ENDM 62 74 118 187 ENDSEG 73 119 186 73 120 186 74 121 187 FAIL 72 122 185 FORGE e ua ens 72 1
19. DSP ASSEMBLER REFERENCE MANUAL 71 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES lt Immediate short addressing mode force operator gt Immediate long addressing mode force operator 6 3 ASSEMBLER DIRECTIVES Assembler directives can be grouped by function into seven types Assembly control Symbol definition Data definition storage allocation Listing control and options Object file control Macros and conditional assembly Structured programming NO gt WD gt 6 3 1 Assembly Control The directives used for assembly control are COMMENT Start comment lines DEFINE Define substitution string END End of source program FAIL Programmer generated error message FORCE Set operand forcing mode HIMEM Set high memory bounds INCLUDE Include secondary file LOMEM Set low memory bounds MODE Change relocation mode MSG Programmer generated message ORG Initialize memory space and location counters RADIX Change input radix for constants RDIRECT Remove directive or mnemonic from table SCSJMP Set structured control branching mode SCSREG Reassign structured control statement registers UNDEF Undefine DEFINE symbol WARN Programmer generated warning OO 72 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES 6 3 2 Symbol Definition The directives used to control symbol definition are
20. ___ _______ _ ________ _______ __ ___ DSP ASSEMBLER REFERENCE MANUAL 289 Appendix F DEVICE DEPENDENT INFORMATION F 2 DSP56000 INFORMATION The Motorola DSP56000 refers to a family of high speed low power programmable CMOS processors The DSP56000 supports 24 bit signed fixed point fractional arith metic F 2 1 Instruction Set Summary DSP56000 instructions can be grouped by function into six types Arithmetic instructions Logical instructions Bit manipulation instructions Loop instructions Move instructions Program control instructions amp F 2 1 1 Arithmetic Instructions The DSP56000 instructions used for arithmetic operations are ABS Absolute value ADC Add long with carry ADD Add ADDL Shift left then add ADDR Shift right then add ASL Arithmetic shift accumulator left ASR Arithmetic shift accumulator right CLR Clear accumulator CMP CMPM Compare magnitude DEC Decrement accumulator DIV Divide iteration INC Increment accumulator MAC Signed multiply accumulate MACR Signed multiply accumulate and round MPY Signed multiply MPYR Signed multiply and round NEG Negate accumulator NORM Normalize accumulator iteration RND Round accumulator Instruction allows parallel data move e a 290 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMA
21. ee 39 4 3 SECTIONS AND DATA HIDING 2 eee 40 4 3 1 Sections alid Symbols i Ane te teris eb TEES 40 4 3 2 Sections and 5 42 4 3 3 Nested and Fragmented 42 4 4 SECTIONS AND RELOCATION 43 4 5 ADDRESS ASSIGNMENT sits weeds a rk wee Edi 44 4 5 1 The ORG 45 4 5 2 m 47 4 5 3 Address Assignment 48 4 5 4 Circular BHHBIS es E 49 4 6 EXAMPLE 1 MULTI PROGRAMMER ENVIRONMENT 50 4 6 1 Absolute Mode Implementation 52 I EALLAELKL AEALLLAINILLLLLLLOOLIALNALALNALZALALAZAZZZAV ZAALLALLLL AAZZT vi DSP ASSEMBLER REFERENCE MANUAL MOTOROLA TABLE OF CONTENTS Paragraph Page Number Title Number 4 6 2 Relative Mode Implementation 53 4 7 EXAMPLE 2VOVERLAYS ss 54 4 7 1 Absolute Mode Implementation 55 4 7 2 Relative Mode 56 4 8 EXAMPLE 3 BOOTSTRAP OVERLAY 57 4 8 1 Absolute Mode Implementation 58 4 8 2 Relative Mode
22. Example ASM56000 A B Z myprog asm Assemble the file MYPROG ASM in absolute mode and strip symbol information from the load file created as output filenames A list of operating system compatible filenames including optional path names If no extension is supplied for a given file the assembler first will attempt to open the file using the filename as supplied If that is not suc cessful the assembler appends ASM to the filename and attempts to open the file again If no pathname is specified for a given file the assembler will look for that file in the current directory The list of files will be processed sequentially in the order given and all files will be used to generate the ob ject file and listing The assembler will redirect the output listing to the standard output if the output listing is not suppressed with the IL option or if it is not redirected via the L command line option described above The standard output generally goes to the console or terminal screen by default but can be diverted to a file or to a printer by using the I O redirection facilities of the host operating system if available Error messages will always appear on the stan dard output regardless of any option settings Note that some options B L allow a hyphen as an optional argument which indicates that the corresponding output should be sent to the standard output stream Unpredictable results may occur if for example the object fi
23. A label is not allowed with this directive mms Which memory space X Y L P or E will be used as the runtime memory space If the memory space is L any allocated datum with a value greater than the target word size will be extended to two words otherwise it is trun cated If the memory space is E then depending on the memory space qual ifier any generated words will be split into bytes one byte per word or a 16 8 bit combination rc Which runtime counter H L or default if neither H or L is specified that is associated with the rms will be used as the runtime location counter lt rmp gt Indicates the runtime physical mapping to DSP memory internal E ex ternal R ROM A port A B port B If not present no explicit mapping is done lt gt absolute integer expression representing the counter number to be used as the runtime location counter Must be enclosed in parenthe ses Should not exceed the value 65535 expl Initial value to assign to the runtime counter used as the rlc If lt exp1 gt is a relative expression the assembler uses the relative location counter If lt 1 gt is an absolute expression the assembler uses the absolute location counter If lt exp1 gt is not specified then the last value and mode that the counter had will be used 5 _ DSP ASSEMBL
24. Appendix ASSEMBLER MESSAGES Illegal secondary mnemonic The secondary mnemonic to an FMPY instruction was not one of FADD FSUB or FADDSUB Illegal use of SSH as loop count operand The contents of the system stack high register may not be used as the loop count operand of a DO instruction Illegal X field destination specified Illegal X field destination register specified Illegal Y field destination specified The destination operand in an X or Y memory data move is invalid for the type of instruction specified Illegal Y field source specified The source operand in an X memory data move is invalid for the type of instruction specified Immediate addressing mode not allowed Immediate operands are not allowed with some instructions in particular program memory moves Immediate operand not allowed Immediate operands are not allowed with some instructions in particular program memory moves Immediate operand required The ANDI and ORI instructions must have an immediate value as the source op erand Immediate value too large The immediate operand value is too large for the space allotted in the instruction Immediate value too large to use short The immediate value being forced short is too large to fit into the instruction word Increment value cannot be zero The increment parameter to a DUPF directive must be greater than zero DSP ASSEMBLER REFERENCE M
25. L memory references are not allowed Operands must be or refer to single word values MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 179 Chapter 7 STRUCTURED CONTROL STATEMENTS Note that values in the reg1 and reg2 data registers are not saved before expression evaluation This means that any user data in those registers will be overwritten each time the expression is evaluated at runtime The programmer should take care either to save needed contents of the registers reassign data registers using the SCSREG directive or not use them at all in the body of the particular structured construct being executed The data registers used by the structured control statements are listed in Appendix F 7 4 2 Compound Expressions A compound expression consists of two or more simple expressions section 7 4 1 joined a logical operator AND or OR The boolean value of the compound expression is de termined by the boolean values of the simple expressions and the nature of the logical operator Note that the result of mixing logical operators in a compound expression is un defined JF X1 GT AND LS AND H1 NE R2 this is OK X1 LE B AND LC OR R5 GT R6 undefined The simple expressions are evaluated left to right Note that this means the result of one simple expression could have an impact on the result of subsequent simple expressions because of the condition code settings stemming from the assembler gene
26. NL Display conditional assembly IF ELSE ENDIF and section nesting levels on listing NOAE Do not check address expressions NOCC default reset Disable cycle counts Does not clear total cycle count NOCEX default reset Do not print DC expansions NOCK default reset Disable checksumming of instruction and data values NOCL Do not print the conditional assembly directives 3 DSP ASSEMBLER REFERENCE MANUAL 143 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES NOCM Do not preserve comment lines of macros when they are defined NODEX default reset Do not expand DEFINE symbols within quoted strings NODLD default reset Restrict use of certain directives in DO loop NODXL Do not expand DEFINE directive strings in listing NOFC default reset Inhibit folded comments NOFF default reset Use multiple line feeds for page ejects in the listing file NOFM default reset Do not format assembler messages NOGS default reset in relative mode Do not make all sections global static NOHDR not generate listing header This also turns off titles and subtitles NOINTR default reset in relative mode Do not perform interrupt location checks NOMC Do not print macro calls NOMD Do not print macro definitions NOMEX default reset Do not print macro expansions NOMI default reset Do not scan MACLIB directory paths for include f
27. ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES STITLE Initialize Program Sub Title STITLE string The STITLE directive initializes the program subtitle to the string in the operand field The subtitle will be printed on the top of all succeeding pages until another STITLE directive is encountered The subtitle is initially blank The STITLE directive will not be printed in the source listing An STITLE directive with no string argument will cause the current sub title to be blank A label is not allowed with this directive See also TITLE EXAMPLE STITLE COLLECT SAMPLES ___ ______ _ ________ _______ __ ___ OO DSP ASSEMBLER REFERENCE MANUAL 163 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SYMOBJ Write Symbol Information to Object File SYMOBJ csymbol symbol symbol SYMOB4 directive causes information for each symbol to be written to the object file This directive is recognized but currently performs no operation in COFF assemblers see Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF A label is not allowed with this directive EXAMPLE SYMOBJ XSTART HIRTN ERRPROC 164 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES TABS Set Listing Tab Stops TABS tabstops The TABS directive allows resetting the listing file tab stops from the default value of 8 A label is not allowed with this directive
28. Appendix B DIRECTIVE SUMMARY B 5 OBJECT FILE CONTROL The directives used for control of the object file are COBJ Comment object code IDENT Object code identification record SYMOBJ Write symbol information to object file B 6 MACROS AND CONDITIONAL ASSEMBLY The directives used for macros and conditional assembly are DUP Duplicate sequence of source lines DUPA Duplicate sequence with arguments DUPC Duplicate sequence with characters DUPF Duplicate sequence in loop ENDIF End of conditional assembly ENDM End of macro definition EXITM Exit macro IF Conditional assembly directive MACLIB Macro library MACRO Macro definition PMACRO Purge macro definition B 7 STRUCTURED PROGRAMMING The directives used for structured programming are BREAK Exit from structured loop construct CONTINUE Continue next iteration of structured loop ELSE Perform following statements when IF false ENDF End of FOR loop ENDI End of IF condition ENDL End of hardware loop ENDW End of WHILE loop Begin FOR loop Begin condition LOOP Begin hardware loop REPEAT Begin REPEAT loop UNTIL End of REPEAT loop WHILE Begin WHILE loop 212222122 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 187 Appendix B DIRECTIVE SUMMARY v 188 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASS
29. Errors will occur when the memory space attribute of the expression result does not match the explicit or implicit memory space specified in the source code Memory spaces are explicit when the address has any of the following forms X address expression Y address expression L address expression P address expression E address expression The memory space is implicitly P when an address is used as the operand of a DO branch or jump type instruction EEE 20 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS Expressions used for immediate addressing can have any memory space attribute 3 4 INTERNAL EXPRESSION REPRESENTATION Expression value representation internal to the assembler is dependent on the word size of the target processor The assembler supports a word and a double word integer format internally The actual storage size of an expression value is dependent upon the magni tude of the result but the assembler is capable of representing signed integers up to 64 bits in length These longer integer representations are useful when performing data ini tialization in L memory space Internal floating point representation is almost entirely dependent upon the host environ ment but in general floating point values are stored in double precision format This means that there are ordinarily 64 bits of storage allotted for a floating point number by the assembler with 11 bits of exponent 53 bits of
30. Example ASM56000 Q myprog asm Assemble the file MYPROG ASM but do not display the signon ban ner on the console R lt rev gt Run the assembler without the specified processor revision level enhance ments This is for backward compatibility so that the assembler will flag new constructions as illegal lt rev gt can be any of the revision specifiers given be low but must be appropriate for the target processor This option is superseded by the P option Processor Revision DSP56001 Rev C DSP56002 DSP56004 DSP56166 DSP96000 Rev B DSP96001 WOANDO Example ASM56000 RC myprog asm Assemble MYPROG ASM without the DSP56000 Revision en hancements DSP ASSEMBLER REFERENCE MANUAL 7 Chapter 1 MOTOROLA DSP ASSEMBLER V This option causes the assembler to report assembly progress beginning of passes opening and closing of input files to the standard error output stream This is useful to insure that assembly is proceeding normally Example ASM56000 V myprog asm Assemble the file MYPROG ASM and send progress lines to the standard error output This option causes the assembler to strip symbol information from the ab solute load file Normally symbol information is retained in the object file for symbolic reference purposes Note that this option is valid only when the assembler is in absolute mode via the A command line option and when an object file is created B option
31. MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Mnemonic memory map p memory map xa memory map x memory map xb memory map y memory map memory map xe memory map xi memory map none memory map xr memory map laa memory map ya memory map lab memory map yb memory map memory map ye memory map 166 memory map yi 2 3 4 5 6 7 8 9 memory map le memory map yr eo memory map li memory map pt memory map pa memory map pf memory map pb memory map emi memory map pe memory map e0 63 29 92 memory map pi memory map error 666666 memory map pr Figure E 29 Memory Mapping Enumerations E 4 2 Object File Transportability There are many different structure definitions the COFF specification These definitions consist of fields comprised of varying C data types These data types are recognized by any reasonable C compiler but their characteristics and sizes may change from machine to machine This is acceptable if the COFF files are to be used only on a particular ma chine architecture But if COFF files are produced on one machine to be used on another several problems may arise One is that since the data fields can vary in size there could be alignment problems when accessing structures or individual fields Another issue is byte ordering between machines Given an arbitrary byte stream some machines store the bytes in
32. 130 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES LOCAL Local Section Symbol Declaration LOCAL lt symbol gt lt symbol gt lt symbol gt The LOCAL directive is used to specify that the list of symbols is defined within the current section and that those definitions are explicitly local to that section It is useful in cases where a symbol is used as a forward reference in a nested section where the enclosing section contains a like named symbol This directive is only valid if used within a program block bounded by the SECTION and ENDSEC directives The LOCAL directive must ap pear before symbol is defined the section If the symbols that appear in the operand field are not defined in the section an error will be generated A label is not allowed with this directive See also SECTION XDEF XREF EXAMPLE SECTION 10 LOCAL LOOPA LOOPA local to this section ENDSEC 5 2 2 42 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 131 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES LOMEM Set Low Memory Bounds LOMEM meme rl expression The LOMEM directive establishes an absolute low memory bound for code and data gen eration mem corresponds to one of the DSP memory spaces X Y L P E rl is one of the letters R for runtime counter or L for load counter The expression is an absolute integer value within the address rang
33. 40 28 104 68 h 41 29 105 69 42 106 6A 43 28 107 68 44 2 108 6 45 2 109 eD m 46 110 6E n 47 2F 111 6F 48 30 0 112 70 49 31 1 113 71 q 50 32 2 114 72 r 51 33 3 115 73 5 52 34 4 116 74 t 53 35 5 117 75 V 54 36 6 118 76 V 55 37 7 119 77 Ww 56 38 8 120 78 X 57 39 9 121 79 y 58 3A 122 7A 7 59 3B 123 78 60 3C 124 7 61 3D 125 7D 62 gt 126 7 63 2 127 DEL ____ _ 184 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix DIRECTIVE SUMMARY Assembler directives can be grouped by function into seven types Assembly control Symbol definition Data definition storage allocation Listing control and options Object file control Macros and conditional assembly Structured programming NO of WD B 1 ASSEMBLY CONTROL The directives used for assembly control are COMMENT Start comment lines DEFINE Define substitution string END End of source program FAIL Programmer generated error message FORCE Set operand forcing mode HIMEM Set high memory bounds INCLUDE Include secondary file LOMEM Set low memory bounds MODE Change relocation mode MSG Programmer generated message ORG Initialize memory space and location counters RADIX Change input radix for constants RDIRECT Remove directive or mnemonic from table SCSJMP Set structured control branching mode SCSR
34. ENDSEC End section EQU Equate symbol to a value GLOBAL Global section symbol declaration GSET Set global symbol to a value LOCAL Local section symbol declaration SECTION Start section SET Set symbol to a value XDEF External section symbol definition XREF External section symbol reference 6 3 3 Data Definition Storage Allocation The directives used to control constant data definition and storage allocation are BADDR Set buffer address BSB Block storage bit reverse BSC Block storage of constant BSM Block storage modulo BUFFER Start buffer DC Define constant DCB Define constant byte DS Define storage DSM Define modulo storage DSR Define reverse carry storage ENDBUF End buffer 6 3 4 Listing Control and Options The directives used to control the output listing are LIST List the assembly LSTCOL Set listing field widths NOLIST Stop assembly listing OPT Assembler options PAGE Top of page size page PRCTL Send control string to printer STITLE Initialize program subtitle TABS Set listing tab stops TITLE Initialize program title DSP ASSEMBLER REFERENCE MANUAL 7 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES 6 3 5 Object File Control The directives used for control of the object file are COBJ Comment object code IDENT Object code identification record SYMOBJ Write symbol information to object file 6 3 6 X
35. ERROR or FATAL and the message text In addition the error message may contain extra information indicating erroneous symbols or the field Label Opcode Operand Opcode 2 Operand 2 X Move Y Move where the error oc curred Page 8 is the end of the source statement listing After the END directive at line 232 the assembler reports the total number of errors and warnings it encountered during the assembly process After the source listing the assembler records other information encountered during as sembly On page 9 the names of the two macros used in the program are listed along with their definition lines in the source listing If any sections had been declared in the lt __ 236 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT program they would be shown here as well as define symbols and their corresponding substitution strings Next the symbol table is output sorted by symbol name The symbol table data includes the symbol type integer floating point its value the section where it was defined if applicable and any attributes it may have LOCAL GLOBAL SET Figure D 3 contains an annotated assembler listing line showing virtually every possible listing field The significance of some fields may require further explanation The macro definition expansion column will contain a plus sign during m
36. Figure D 4 shows the memory utilization report for the assembler source in Figure D 5 The individual X Y L and P memory spaces are reported separately The starting and ending addresses length type and any label section or overlay data are display for each reported block The blocks are delimited by the occurrence in the source of either a data allocation directive BSC DC DS DSM DSR or an ORG directive In the X memory report of Figure D 4 the first reported block is an uninitialized area of 1024 words This corresponds to the first DS directive in Figure D 5 which reserves 1024 words of memory in X data space The next block of memory in X data space is the overlay code for the FIR filter It begins immediately after the first block and is ten words long The type column shows what kind of code or data has been generated as well as indicat ing that a block is unused In the line corresponding to the first DS directive in the source the type is DATA to indicate that it is an uninitialized data area There are other types for initialized data code and modulo and reverse carry buffers For example the second MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 237 Appendix D ASSEMBLER LISTING FILE FORMAT block in the X memory report is of type CODE because it is overlay code to be executed in P memory The label from the source file is included on the report under the label column since there was a label associated with the DS d
37. L indicates that either R or L must be selected Contains one or more optional elements If more than one optional element is shown the required element separators are indicated All elements outside of the angle brackets must be specified as they appear For example the syntacti cal element lt number gt requires the comma to be specified if the optional element numbers is selected MOTOROLA DSP ASSEMBLER REFERENCE MANUAL iii Preface lt gt The element names are printed in lower case and contained in angle brackets Some common elements used to describe directives are comment A statement comment label A statement label expr or An assembler expression expression number A numeric constant lt string gt A string of ASCII characters enclosed in quotes lt delimiter gt A delimiter character lt option gt An assembler option lt sym gt or An assembler symbol lt symbol gt Supporting Publications DSP56000 Family Manual Motorola Inc 1992 DSP96002 User s Manual Motorola Inc 1989 DSP56100 Family Manual Motorola Inc 1993 Motorola DSP Simulator Reference Manual Motorola Inc 1994 Motorola DSP Linker Librarian Reference Manual Motorola Inc 1994 EEE iv DSP ASSEMBLER REFERENCE MANUAL MOTOROLA TABLE OF CONTENTS Paragraph Page Number Title Number Preface Chapter 1 MOTOROLA DSP ASSEMBLER 1 1 INTRO
38. MOTOROLA DSP OBJECT FILE FORMAT COFF E 3 4 6 1 Filenames The auxiliary table entry for a filename contains a 14 character array followed by an un signed long integer If the integer is zero then the filename is in the array Otherwise it is in the string table at the offset given by the integer value The x ftype field indicates the memory space used for the stack in compiled modules Declaration Name Description char x Source file name unsigned long x foff String table offset to file name unsigned long x ftype Memory space used by stack Figure E 17 Filename Symbol Auxiliary Entry E 3 4 6 2 Sections Section auxiliary entries have the format shown in Figure E 18 This information is anal ogous to selected fields in the corresponding section header If the object file is relocat able a section symbol entry will have a second auxiliary entry with the format shown in Figure E 19 Declaration Description long int x scnlen Section length unsigned long x nreloc Number of relocation entries unsigned long x nlinno Number of line numbers Unused zero filled Figure E 18 Section Symbol Auxiliary Entry C 1 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 273 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Declaration Name Description long int secno Logical section number long int rsecno Logical
39. STRING ENDM and a macro call CSTR ABCD the resulting macro expansion would be DC ABCD Quoted String DEFINE Expansion A sequence of characters which matches a symbol created with a DEFINE directive will not be expanded if the character sequence is contained within a quoted string Assembler strings generally are enclosed in single quotes If the string is enclosed in double ___ ______ _ ___ ___ ___ _______ ___ If DSP ASSEMBLER REFERENCE MANUAL 83 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES quotes then DEFINE symbols will be expanded within the string In all other respects usage of double quotes is equivalent to that of single quotes EXAMPLE Consider the source fragment below DEFINE LONG STR MAC MACRO STRING MSG This is a LONG STRING MSG This is a LONG STRING ENDM If this macro were invoked as follows STR MAC sentence then the resulting expansion would be MSG This is a LONG STRING MSG This is a short sentence _______ _ ________ _______ __ ___ ____________ 84 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Function Delimiter All assembler built in functions start with the symbol See Section 3 8 for a full discus sion of these functions EXAMPLE SVAL EQU SQT FVAL OBTAIN SQUARE ROOT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 85 Chapter 6 ASSEMBLER SIGNIFICANT CHARAC
40. The blank left margin value in the PAGE directive exceeds the default or specified page width parameter Length value greater than string size The length parameter in a substring construct is larger than the composite length of the input string argument Line too long Source statements including continuation lines cannot exceed 512 characters in length LOC option must be used before any local label The LOC option must appear before any local label so that the assembler can keep the local label lists synchronized LOCAL directive not valid in global section The LOCAL directive is not allowed inside an implicit or explicit global section Local symbol names cannot be used with GLOBAL Local symbol names cannot be used with LOCAL Local symbol names cannot be used with XDEF Local symbol names cannot be used with XREF Underscore labels are not allowed with this directive LOCAL without preceding SECTION directive A LOCAL directive was encountered outside any previously defined section Long absolute address cannot be used An operand was forced long where only a short or short address was valid Long absolute cannot be used force short or I O short A forward reference was forced long where only a short or I O short address was valid D X EELLLILL LUOOLLLLLNLLLLLAZAZLLZZZLACALLLLLLULULUATLZLNAZLALLILUEZT 214 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Macro cannot be redefin
41. equal not equal bitwise AND OR EOR logical AND OR d Ca IQ Operators of the same precedence are evaluated left to right Valid operands include nu meric constants literal ASCII strings and symbols The one s complement shift and bit wise operators cannot be applied to floating point operands That is if the evaluation of an expression after operator precedence has been applied results in a floating point number on either side of any of these operators an error will be generated 3 8 FUNCTIONS The assembler has several built in functions to support data conversion string compari son and transcendental math computations Functions may be used as terms in any ar bitrary expression Functions may have zero or more arguments but must always be followed by open and closed parentheses Function arguments which are expressions must be absolute expressions except where noted Arguments containing external refer ences are not allowed There must be no intervening spaces between the function name DSP ASSEMBLER REFERENCE MANUAL 25 Chapter 3 EXPRESSIONS and the opening parenthesis and there must be no spaces between comma separated arguments Assembler functions can be grouped into five types Mathematical functions Conversion functions String functions Macro functions Assembler mode functions c1 3 8 1 Mathematical Functions The mathematical functions
42. occurs without any other errors this may represent an internal error which should be reported to Motorola One exception is the use of the checksumming function CHK with the EQU di rective Instruction encoding may be incomplete after the first pass due to forward referencing causing the checksum value to change between passes Because of this the SET directive must be used to assign the checksum value to a symbol Possible invalid white space between operands or arguments The assembler verifies that fields which should not contain operands or values are empty If these fields are not empty the assembler produces this error Post decrement addressing mode not allowed The post decrement addressing mode is not allowed for this instruction The re striction applies for example to bit manipulation instructions and some jump type instructions Post decrement by offset addressing mode not allowed The post decrement by offset addressing mode is not allowed for this instruction The restriction applies for example to bit manipulation instructions and some jump type instructions DI LLLUAAALLLLLA LALLLLLI TZLALALALLLLLLLLILLLALLLZT 220 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Post increment addressing mode not allowed The post increment addressing mode is not allowed for this instruction The restric tion applies for example to bit manipulation instructions and some jump typ
43. or external reference then the assembler will pick the long form of immediate addressing by default If this is not desired then the short form of addressing can be forced using the immediate short addressing mode force operator lt See also FORCE EXAMPLE In the following sequence of source lines the symbol CNST is not known to the assembler on pass one and therefore the assembler would use the long immediate addressing form for the MOVE instruction MOVE CNST DO L CNST EQU 5 Because the long immediate addressing mode makes the instruction two words long in stead of one word for the immediate short addressing mode it may be desirable to force the immediate short addressing mode as shown below MOVE lt CNST DO L CNST EQU 5 ____ _____ _ ________ _______ __ ___ l DSP ASSEMBLER REFERENCE MANUAL 93 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES gt Immediate Long Addressing Mode Force Operator Many DSP instructions allow a long immediate form of addressing If the immediate data is known to the assembler on pass one not a forward or external reference then the as sembler will always pick the shortest form of immediate addressing consistent with the in struction unless the FORCE LONG directive is active If this is not desired then the long form of addressing can be forced using the immediate long addressing mode force oper ator gt See also FORCE EXAMPLE
44. the data register in the Y field must be from the set 04 07 Conversely if the data register of the X data field is from the set D4 D7 the data register in the Y field must be from the set DO D3 short addressing mode not allowed An operand was forced I O short when I O short addressing was not allowed Jump based on SSH or SSL cannot follow update of SP Jump via SSH or SSL cannot follow write to SP A JSET JCLR JSSET or JSCLR instruction which tested a bit in either the SSH or SSL register was immediately preceded by a MOVE to the SP register L space specified for load but not for runtime L space specified for runtime but not for load Since memory space is the only double wide memory space if memory space is the runtime memory space the only valid load memory space is L Likewise L memory space can never be specified as the load memory space if runtime mem ory space is X Y or P LB option must be used before any code or data generation The LB option must be specified before any code or data in order for the assembler to increment the location counter appropriately ILLA DSP ASSEMBLER REFERENCE MANUAL 213 Appendix ASSEMBLER MESSAGES LDB option must be used before any code or data generation The LDB option must be specified before any code or data in order for the assem bler to establish the debug source file appropriately Left margin exceeds page width
45. 2 Syntactic variables used in the for mats are defined as follows expression simple or compound expression section 7 4 lt stmtlist gt Zero or more assembler directives structured control statements or executable instructions Note than an assembler directive Chapter 6 occurring within a structured control statement is examined exactly once at assembly time Thus the presence of a directive within a FOR LOOP REPEAT WHILE statement does not imply re peated occurrence of an assembler directive nor does the presence of a directive within an IF THEN ELSE structured control statement imply conditional assem bly opi A user defined operand whose register memory location holds the FOR loop counter The effective address must use a mem ory alterable addressing mode e g it cannot be an immediate value lt op2 gt The initial value of the FOR loop counter The effective address may be any mode and may represent an arbitrary assembler ex pression Chapter 3 lt gt The terminating value of the FOR loop counter The effective ad dress may be any mode and may represent an arbitrary assem bler expression Chapter 3 op4 The step increment decrement of the FOR loop counter each time through the loop If not specified it defaults to a value of 1 The effective address may be any mode and may represent an arbitrary assembler expression Chapter 3 cnt The terminating value
46. 302 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 4 1 3 Bit Manipulation Instructions The DSP56100 instructions used for bit manipulation are BFCHG Test bit field and change BFCLR Clear bit field BFSET Set bit field BFTSTH Test bit field high BFTSTL Test bit field low F 4 1 4 Loop Instructions The DSP56100 instructions used for loop operations are BRKcc Exit hardware loop conditionally DO Start hardware loop DO FOREVER Start infinite loop ENDDO Exit from hardware loop F 4 1 5 Move Instructions The DSP56100 instructions used for move operations are LEA Load effective address MOVE Move data MOVEC Move control register MOVEI Move immediate short MOVEM Move program memory MOVEP Move peripheral data MOVES Move absolute short F 4 1 6 Program Control Instructions The DSP56100 instructions used for program control are Bcc Branch conditionally BRA Branch always BScc Branch to subroutine conditionally BSR Branch to subroutine DEBUG Enter debug mode DEBUGcc Enter debug mode conditionally Jcc Jump conditionally Instruction allows parallel data move 2 DSP ASSEMBLER REFERENCE MANUAL 303 Appendix F DEVICE DEPENDENT INFORMATION JMP Jump JScc Jump to subroutine conditionally JSR Jump to subroutine NOP No operation REP Repeat next instruction
47. A symbol defined with SET cannot be redefined except through another SET directive Symbol cannot be set to new value The label has been defined previously other than with the SET directive Only sym bols defined using the SET directive may be redefined Symbol defined in current section before GLOBAL directive Symbol defined in current section before XDEF directive The GLOBAL or XDEF directive must appear within a section prior to the definition of any symbols in its argument list Any symbols within a section which must be accessible outside the section should be declared in a GLOBAL or XDEF directive immediately following the SECTION directive Symbol name too long Symbols are limited to 512 characters The first character must be alphabetic or the underscore character A Z a z The remaining characters must be alpha numeric including the underscore character A Z a z 0 9 Symbol not previously defined The symbol specified in an UNDEF directive was not previously defined in a DE FINE directive Symbol redefined The symbol has already been used as a label in a previous context Symbol tag mismatch A matching tag reference could not be found for a tagged symbol table entry Symbol undefined on pass 2 The symbol used as an operand or directive argument was never defined in the source program Symbols must start with alphabetic character Symbol names must begin with an upper or lower case alphabetic character or
48. ASSEMBLER REFERENCE MANUAL 231 Appendix ASSEMBLER MESSAGES File info out of sequence File debug information is scrambled This is a serious internal error that should be reported to Motorola File not encountered on pass 1 The file in the source input list was never processed by the assembler during pass 1 This is an internal error that should be reported to Motorola Immediate mode select error The mode indicator passed to the immediate addressing mode selection logic was not valid This is a serious internal error that should be reported to Motorola Input mode stack out of sequence The stack for recording whether input is from a file or a macro expansion has been corrupted This is an internal error that should be reported to Motorola Invalid DO loop range check The value passed to the end of DO loop verification logic is bad This is an internal error that should be reported to Motorola Invalid instruction class The saved MAC type instruction class has been corrupted This is an internal error that should be reported to Motorola Invalid tag storage class The saved tag storage class has been corrupted This is an internal error that should be reported to Motorola error writing data word to object file An I O error occurred which prevented the assembler from writing data to the out put object file Location bounds selection failure The logic for selecting the appropriate bounds array based on
49. ASSEMBLER REFERENCE MANUAL 49 Chapter 4 SOFTWARE PROJECT MANAGEMENT The ORG statement sets the origin to hexadecimal 100 in X memory The first buffer is manually allocated with a size of 24 Since the starting address is hex 100 the buffer is already suitably aligned The label BUF1 is assigned the runtime counter value at the beginning of the buffer The second buffer is allocated using the DSM directive which automatically sets the buffer starting address before reserving space In this case the first buffer ended at location 117 hexadecimal so the assembler advances the pro gram counter to location 120 hex before assigning a value to the buffer label BUF2 Buffers are special purpose data structures but they are named and accessed with labels like any other data block They therefore adhere to the same rules governing data hiding in sections that any other segment of code or data would follow A buffer allocated when the assembler is in absolute mode either via A or an absolute ORG or MODE directive is placed in memory according to the absolute value of the runtime location counter at as sembly time A buffer allocated in relative mode a relocatable buffer is suitably aligned within its relocation section at assembly time During the link phase a section enclosing any relocatable buffers is located based on the largest relocatable buffer it contains un less the buffers inside the section are auto aligned This insures that any
50. DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Type C EFON Physical end of function C NULL No storage class C AUTO Automatic variable C EXT STAT C REG C EXTDEF LABEL MOS C ARG STRTAG MOU C UNTAG C TPDEF USTATIC ENTAG C MOE Member of enumeration REGPARAM Register parameter C FIELD Bit field External symbol Static symbol Register variable External definition Label Undefined label Member of structure 2 3 4 5 6 7 8 9 Function argument Structure tag Member of union N Union tag Type definition uk Uninitialized static Enumeration tag k Figure E 15 Storage Classes Qa MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 269 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Type C BLOCK Beginning and end of block C FON Beginning and end of function C EOS End of structure C FILE C language source filename C LINE ALIAS Duplicated tag HIDDEN A FILE Assembly source filename A SECT Beginning and end of section A BLOCK Beginning end of COFF section A MACRO Macro expansion A GLOBAL Global assembly language symbol A XDEF XDEFed symbol A XREF XREFed sym
51. If this macro were invoked as follows STR MAC sentence then the resulting expansion would be MSG This is a LONG STRING MSG This is a short sentence 5 5 5 Macro local label override operator It may be desirable to pass a local label as a macro argument to be used as an address reference within the macro body If a circumflex precedes an expression containing an underscore label during macro expansion the associated term will be evaluated with normal local label scope rather than macro call scope Such interpretation disables the usual local label semantics for this particular reference within the macro call Here is an example LOAD MACRO ADDR MOVE P ADDR RO ENDM The macro local label override operator causes the ADDR argument to be interpreted as a local label outside the macro if the expanded argument has a leading underscore there is no leading underscore on the actual argument then the override operator has no effect Consider the following macro call LOCAL LOAD LOCAL Without the local label override in the macro definition an error would occur at the macro call because a symbol LOCAL was not defined in the body of the macro Because the circumflex was used the value of LOCAL gets moved to RO Note that any arbitrary string may be used as the actual parameter to the LOAD macro The override operator has an effect only with underscore labels Care must be exercised however in not de a
52. Macros and Conditional Assembly The directives used for macros and conditional assembly are DUP Duplicate sequence of source lines DUPA Duplicate sequence with arguments DUPC Duplicate sequence with characters DUPF Duplicate sequence in loop ENDIF End of conditional assembly ENDM End of macro definition EXITM Exit macro IF Conditional assembly directive MACLIB Macro library MACRO Macro definition PMACRO Purge macro definition 6 3 7 Structured Programming The directives used for structured programming are BREAK Exit from structured loop construct CONTINUE Continue next iteration of structured loop ELSE Perform following statements when IF false ENDF End of FOR loop ENDI End of IF condition ENDL End of hardware loop ENDW End of WHILE loop Begin FOR loop Begin condition LOOP Begin hardware loop REPEAT Begin REPEAT loop UNTIL End of REPEAT loop WHILE Begin WHILE loop ee 74 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Individual descriptions of each of the assembler special characters and directives follow They include usage guidelines functional descriptions and examples Some directives require a label field while in many cases a label is optional If the description of an as sembler directive does not indicate a mandatory or optional label field then a label is not a
53. REPcc Repeat next instruction conditionally RESET Reset on chip peripheral devices RTI Return from interrupt RTS Return from subroutine STOP Stop processing low power standby SWI Software interrupt WAIT Wait for interrupt low power standby F 4 2 Register Names and Usage The following DSP56100 register names in either upper or lower case cannot be used as symbol names in an assembly language source file X A A2 X0 AO 1 1 B B2 YO BO Y1 B1 RO NO MO R1 N1 M1 R2 N2 M2 R3 N3 M3 MR CCR SR LC LA SSH SSL OMR The following DSP56100 registers are used by the assembler in structured control state ment processing Chapter 7 A X0 YO RO 8 2 2 2 304 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 4 3 Condition Code Mnemonics Following are the DSP56100 condition code mnemonics which correspond to the condi tional instructions based on the CCR condition codes These tests may be used in an op erand comparison expression within a structured control statement Chapter 7 lt CC gt carry clear lt CS gt carry set lt EC gt extension clear lt EQ gt equal lt ES gt extension set lt GE gt greater or equal lt GT gt greater than HS higher or same lt LC gt limit clear lt LE gt less or equal lt LO gt lower lt LS gt limit set lt LT gt less than MI minus NE not equal NN not normali
54. Sections which are split into parts or among files are logically recombined so that each section can be relocated as a unit Sections may be relocatable or absolute In the assembler absolute mode command line option all sections are considered absolute In relative mode all sections are initially relocatable However a section or a part of a section may be made absolute either im plicitly by using the ORG directive or explicitly through use of the MODE directive If the assembler encounters an ORG directive with an absolute runtime address specifi cation it switches to absolute mode and begins generating absolute addresses within the enclosing section Note that the mode change is effective only if the assembler was start ed in relative mode if the A command line option is used the assembler always gener ates absolute addresses The assembler continues to generate absolute code until an ENDSEC directive is encountered or the mode is explicitly changed via the MODE direc tive The MODE directive allows for arbitrary switching between absolute and relocatable code generation MODE ABS OLUTE REL ATIVE gt The MODE directive may be issued at any time in the assembly source to alter the set of location counters used for section addressing Code generated while in absolute mode will be placed in memory at the location determined during assembly Relocatable code and data within a section are combined at link time even if absolu
55. a word starting at the least significant bit LSB end of the word while others store bytes starting at the most significant bit MSB end of the word DI LLAAXAALALLLLLLLLLL IIAIIA A A AAA LUL LLLLLLLLLLLLGOULLLU XT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 281 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF The Motorola DSP version of COFF addresses these potential problems by normalizing the object file Normalization occurs in a number of ways All structure and union ele ments are converted to long values and raw data is stored in 4 byte quantities indepen dent of the word size of the target processor In some cases this wastes space in the object file and in memory but it was considered worth the price for transportability among supported hosts Also it is not a completely portable solution by any means e g for ma chines with larger than 4 byte word sizes The byte ordering issue was dealt with by establishing a baseline ordering providing com pliance for foreign hosts with conversion code This introduces overhead logic on ma chines that do not support the baseline word order but again it was seen as a reasonable trade off to insure transportability of object files among development environments Note that byte swapping logic only comes into play for fields that are not byte atomic such as integer fields Character arrays in structures for example should not have their bytes ex changed The byte ordering for Mo
56. absolute Example LOADDR EQU CVS X TARGET set LOADDR to X TARGET DEF lt symbol gt Returns an integer 1 memory space attribute N if symbol has been defined 0 otherwise symbol may be any label not associated with a MACRO or SECTION directive If symbol is quoted itis looked up as a DEFINE symbol if it is not quot ed it is looked up as an ordinary label Example IF DEF ANGLE assemble if ANGLE defined EXP lt expression gt Returns an integer 1 memory space attribute N if the evaluation of lt expression gt would not result in errors Returns 0 if the evaluation of lt expression gt would cause an error No error will be output by the assembler if lt expression gt contains an er ror No test is made by the assembler for warnings The lt expression gt may be relative or absolute Example IF IQEXP QFRC VAL Skip on error 2 2 _ __ DSP ASSEMBLER REFERENCE MANUAL 31 Chapter 3 EXPRESSIONS FLD lt base gt lt value gt lt width gt lt start gt Shift and mask lt value gt into lt base gt for lt width gt bits beginning at bit lt start gt If lt start gt is omitted zero least significant bit is assumed All arguments must be positive integers and none may be greater than the target word size Returns the shifted and masked value with a memory space attribute of None Example SWITCH EQU FLD TOG 1 1
57. addressed through the Low runtime counter The P memory code is also private to the O section and uses the de fault runtime location counter for address generation In the discussion below assume that the programmers responsible for the FILTER and MAIN sections have similar program structures located in files named FILTER ASM and MAIN ASM respectively The program units can be combined either by invoking a final assembly step to assign absolute addresses or by assembling the modules separately and then linking 5 6 6 DSP ASSEMBLER REFERENCE MANUAL 51 Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 6 14 Absolute Mode Implementation To assemble the entire project source code a new file called PROJECT ASM would be created and would have the form ORG XLE 0000 global low memory X storage declarations if any ORG YLE 0000 low memory storage declarations if gt ORG YH FFCO high memory storage declarations if any ORG XH FFCO global high memory X storage declarations if any initialize internal low Program memory location counter ORG PL 1000 initialize external high Program memory location counter ORG PHE F000 INCLUDE MAIN ASM INCLUDE IO ASM INCLUDE FILTER ASM END ENTRY This file provides the project manager with a mechanism to organize memory utilization to suit the application For example the exte
58. an RDIRECT directive is missing Missing expression An expression was expected by the expression evaluator Missing filename No filename was provided as an argument to the INCLUDE directive Missing line number No line number was provided as an argument to the LINE directive Missing macro name A MACRO directive was encountered without a label or the macro name was omit ted from a PMACRO directive Missing memory space specifier One of the operands of an instruction was expected to have a memory space spec ifier X Y L or P preceding the address mode specifier Missing option The OPT directive was specified without an argument Missing or illegal memory space specifier One of the operands of an instruction was expected to have a memory space spec ifier X Y L or P preceding the address mode specifier Missing or mismatched quote A single or double quote character was expected by the string parsing routines Missing pathname No pathname was provided as an argument to the MACLIB directive Missing processor type There was no argument provided for the P command line option Missing quote Missing quote in string A single or double quote character was expected by the string parsing routines a V9 92M 2 2IAALAAALLLLLLLLLLLLLLL ELI 216 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Missing revision There was no argument provided for the R command line option Missing section
59. any symbols sections or macros are de fined so that the assembler can remain consistent when storing label names in the symbol table IDENT directive must contain revision number IDENT directive must contain version number The version and revision numbers are both required arguments for the IDENT di rective Illegal directive in buffer declaration A directive was encountered between a BUFFER ENDBUF pair that is not allowed in that context Some invalid directives include any other buffer type directive DSM DSR etc section directives or any directive which alters the current loca tion counter designation MODE ORG Illegal directive inside DEF ENDEF declaration Illegal directive outside DEF ENDEF declaration Some source level debug directives such as FILE make no sense and are not allowed inside DEF ENDEF declarations Conversely other directives such as VAL are not allowed outside of a DEF ENDEF declaration Illegal directive inside DO loop A directive was encountered inside a DO loop that is not allowed in that context Some invalid directives include any buffer type directive DSM DSR etc section directives or any directive which alters the current location counter designation MODE ORG Illegal function argument An invalid argument was passed to one of the assembler built in functions in par ticular the LCV function EEE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 207 Appendix AS
60. as the macro with the extension ASM added For example BLOCKMV ASM would be a file that contained the definition of the macro called BLOCKMV If a MACLIB directive has been specified in the source code and the assembler encoun ters a name in the operation field that is not a previously defined macro or is not contained in the directive or mnemonic tables the directory specified in the MACLIB directive will be searched for a file of that name with the ASM extension added If such a file is found the current source line will be saved and the file will be opened for input as an INCLUDE file When the end of the file is encountered the source line is restored and processing is resumed Because the source line is restored the processed file must have a macro definition of the unknown name or an error will result when the source line is restored and processed However the processed file is not limited to macro definitions and can include any legal source code statements Multiple MACLIB directives may be given in which case the as sembler will search each directory in the order in which they were specified 5 3 MACRO DEFINITION The definition of a macro consists of three parts the header which assigns a name to the macro and defines the dummy arguments the body which consists of prototype or skel eton source statements and the terminator The header is the MACRO directive its label and the dummy argument list The body contains th
61. assembler substitutes long absolute addressing Absolute address too large to use short long substituted The absolute address value being forced short will not fit in the storage allocated for a short address The assembler substitutes long absolute addressing Absolute address too small to use I O short long substituted The absolute address is not within the range specifying an short address even though the I O short forcing operator has been used The assembler substitutes long absolute addressing Address involves incompatible memory spaces The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X Y L P rogram E MI or N one only N is fully compatible with all other attributes In this case an operand was evaluated with a different memory space attribute than that specified in the instruction Cannot force short addressing for source and destination In a MOVEP or MOVES instruction an attempt was made to force both operands to short or I O short The second operand defaults to long Cannot force short immediate with this parallel move The immediate operand in the X field of a parallel X memory and register move cannot be forced short The mode is changed to long immediate Contents of assigned register in previous instruction not available generating NOP instruction Due to pipelining i
62. basename filename without extension of the first filename encountered in the source input file list and append LST to the basename If the L option is not specified then the assembler will route listing output to the standard output usually the console or terminal screen by default The L option should be specified DSP ASSEMBLER REFERENCE MANUAL 5 Chapter 1 MOTOROLA DSP ASSEMBLER only once If the file named in the L option already exists it will be overwritten Example ASM96000 L filter asm gauss asm In this example the files FILTER ASM and GAUSS ASM are assem bled together to produce a listing file Because no filename was giv en with the L option the output file will be named using the basename of the first source file in this case FILTER The listing file will be called FILTER LST M pathname This is equivalent to a source statement of the form lt gt The pathname must be a legal operating system pathname The M option may be repeated as many times as desired The directories will be searched in the order specified on the command line See the MACLIB di rective Chapter 6 for more information Example ASM56000 M fftlib trans asm This example uses UNIX pathname conventions and would cause the assembler to look in the fftlib subdirectory of the current directory for a file with the name of the currently invoked macro found in the source file
63. command line option was not found Cannot open source file The assembly source input file was not found Duplicate listing file specified ignored Duplicate object file specified ignored The L and B command line options were encountered more than once on the command line Only the first occurrence of each option is used The assembler continues processing Illegal command line D option argument The symbol name given in a D command line option is invalid possibly too long or does not begin with an alphabetic character or the substitution string is not en closed in single quotes Illegal command line I option argument A problem occurred when attempting to save the include file path string Illegal command line M option argument A problem occurred when attempting to save the MACLIB file path string Illegal command line P option argument The string provided as the processor type is not valid Illegal command line R option argument The string provided as the revision level is not valid Illegal command line option The option specified on the command line was not recognized by the assembler Interrupted The assembler was interrupted by a keyboard break Control C 190 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES LDB option with no listing file specified using source file The LDB option was given on the command line without a corresponding L to gen erate listing file If a lis
64. default reset Do not flag unresolved external references NOW Do not print warning messages NS default reset Allow scoping of symbols within nested sections PP default reset Pretty print listing file The assembler attempts to align fields at a consistent column position without regard to source file formatting PS default reset Pack strings in DC directive Individual bytes in strings will be packed into consecutive target words for the length of the string PSM DSP56100 only Allow programmable short addressing disabling short and short address checking RC Space comments relatively in listing fields By default the assembler always places comments at a consistent column position in the listing file This option allows the comment field to float on a line containing only a label and opcode the comment would begin in the operand field RP Generate instructions to accommodate pipeline delay an address register is loaded in one instruction then the contents of the register is not available for use as a pointer until after the next instruction Ordinarily when the assembler detects this condition it issues an error message The RP op tion will cause the assembler to output a NOP instruction into the output stream instead of issuing an error RSV DSP96000 only Perform location counter checks to insure code data is not located in DSP96000 reserve data memory locations The assembler will is sue a warning if
65. discussed more fully in Chapter 5 4 7 EXAMPLE 2 OVERLAYS An overlay is a transfer of code or data from one memory space or address to another memory space or address at runtime Often the transfer involves copying different blocks of code or data over a common storage area as runtime circumstances dictate hence the name overlay Overlays are useful for moving code into internal program memory from an external memory source such as EPROM They are also effective when implementing large programs with multiple segments which do not need to be accessed concurrently Consider the following program fragment contained in a file called OVER1 ASM SECTION 1 OVLBASE XDEF OVL1 O1SIZE ORG X OVL1 ORG P OVLBASE X START overlay source statements END O1SIZE EQU END START ENDSEC This is a sample of overlay code bounded by a SECTION directive The overlay base or the place to which this block of code will be moved for execution is declared external at OVLBASE OVLBASE is actually defined elsewhere The label OVL1 is XDEFed to pro vide a handle for moving the block at runtime and O1SIZE is also XDEFed so that the overlay management code knows how many words to move Note that the OVL1 label is placed before the ORG for the overlay so that it remains a valid address in X memory dur ing execution The overlay ORG directive insures that subsequent addresses will be based from OVLBASE at runtime The size of the overlay b
66. el T OR WSEH 6 00 61 20 20 68 00 uoIsJeA Jejquuessy 55049 ODLEW 00096450 239 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT or 201404705 89 8 0 00000000 088626 0 20140770 689286 0 00000070 6892860 4014010 088 26 0 000000 1euuoJ Buns Jejquiessy q 4 4t09 49 op 914382384 00000008 19090 A euis JUIOd 91 39280948 dv0se4a op 914382384 op 04 8194V op 91 343860384 op 056 lt 6 39280942 00000842 1909 euisoo 1 JUIOd 1902 oew guis epnjour 96 ve Le 0 9c ve 0c 61 EEEEEEEEEEEEEEE 1344 1 ul eDeg use 6 00 61 20 60 68 00 5 5 55010 OILEN 000964501 I0JOlOIN MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 240 Appendix D ASSEMBLER LISTING FILE FORMAT CO 1euuoJ Buns Jejquiessy q 4 SUIINOY Jeuno 1524 eoe qd u XIpeH ezis Jooo ejep sjuiod yes eseJ d 19002 9928 0 914382384 4014040 6409619 088626 0 89280948 000000 00000848 088226 0 89280948 19
67. exceeded its maximum or minimum value The as sembler wraps the counter value around and continues Runtime origin involves incompatible memory spaces The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory EEE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 197 Appendix ASSEMBLER MESSAGES space attributes of X Y P rogram E MI or N one only N is fully compatible with all other attributes In this case an operand was evaluated with a different memory space attribute than that specified in the directive Runtime reserved address space violation The runtime location counter has incremented into a reserved area of data address space Short absolute address cannot be forced Short absolute addressing is not valid for this operation An appropriate addressing mode long absolute is substituted Short absolute address cannot be forced long substituted Short absolute addressing is not valid for this operation The assembler substitutes long absolute addressing Short immediate cannot be forced Short immediate data is not valid for this operation An appropriate size is substi tuted Short PC relative address cannot be forced Short PC relative addressing is not valid for this operation An appropriate ad dressing mode long PC relative is substituted Signed operand must come first in signed unsigned combinati
68. expr2 gt is the low word The memory space attribute of the result will be None Example LWORD DC LNG HI LO build long word MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 33 Chapter 3 EXPRESSIONS LOG lt expression gt Returns the natural logarithm of lt expression gt as a floating point value lt expres sion gt must be greater than zero The memory space attribute of the result will be None Example LOG EQU LOG 100 0 LOG 4 605170 LST Returns the value of the LIST directive flag as an integer with a memory space at tribute of None Whenever a LIST directive is encountered in the assembler source the flag is incremented when a NOLIST directive is encountered the flag is decremented Example DUP CVI ABS LST list unconditionally LUN lt expression gt Converts the double word lt expression gt to a floating point value For fractional DSPs DSP56000 lt expression gt should represent a binary fraction For floating point DSPs DSP96000 lt expression gt should represent a binary floating point number The memory space attribute of the result will be None Example DBLFRC EQU LUN 3FE0000000000000 DBLFRC 0 5 MAC lt symbol gt Returns an integer 1 memory space attribute N if lt symbol gt has been defined as a macro 0 otherwise Example IF MAC DOMUL expand macro MAX lt expr1 gt I lt exprN gt Returns the greatest of lt expr1 gt lt exprN
69. gt as floating point value The memory space attribute of the result will be None Example MAX DC MAX 1 0 5 5 3 25 5 5 lt lt 34 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS MIN lt expr1 gt I lt exprN gt Returns the least of lt expr1 gt lt exprN gt as a floating point value The memory space attribute of the result will be None Example MIN DC MIN 1 0 5 5 3 25 MIN 3 25 MSP lt expression gt Returns the memory space attribute of lt expression gt as an integer value None 0 X space 1 Yspace 2 Lspace 3 space 4 Espace 5 The lt expression gt may be relative or absolute Example MEM SET QMSP ORIGIN Save memory space MXP Returns an integer 1 memory space attribute N if the assembler is expanding a macro 0 otherwise Example IF MXP macro expansion active POS lt str1 gt lt str2 gt lt start gt Returns the position of string lt str2 gt in stri as an integer starting at position start If start is not given the search begins at the beginning of stri If the lt start gt argument is specified it must be a positive integer and cannot exceed the length of the source string The memory space attribute of the result will be None Example ID EQU POS DSP96000 96 10 3 DSP ASSEMBLER REFERENCE MANUAL 35 Chapter
70. is not allowed with this directive See also SECTION XREF EXAMPLE SECTION 10 XDEF LOOPA LOOPA will be accessible by sections with XREF ENDSEC ___ ______ _ ________ _______ __ ___ OOO DSP ASSEMBLER REFERENCE MANUAL 169 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES XREF External Section Symbol Reference XREF lt symbol gt lt symbol gt lt symbol gt The XREF directive is used to specify that the list of symbols is referenced in the current section but is not defined within the current section These symbols must either have been defined outside of any section or declared as globally accessible within another sec tion using the XDEF directive If the XREF directive is not used to specify that a symbol is defined globally and the symbol is not defined within the current section an error will be generated and all references within the current section to such a symbol will be flagged as undefined The XREF directive must appear before any reference to lt symbol gt in the section A label is not allowed with this directive See also SECTION XDEF EXAMPLE SECTION FILTER XREF AA CC DD XDEFed symbols within section ENDSEC EEE 170 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS 7 1 INTRODUCTION An assembly language provides an instruction set for performing certain rudimentary op erations These operations in turn may be combined into
71. load location counter is assumed to be the same as the runtime location counter ORG PHE Sets the runtime memory space to P Selects the H load counter counter 2 as sociated with P space to use as the runtime location counter The H counter will not be initialized and its last value will be used Code generated hereafter will be mapped to external E memory The load memory space is implied to be P and the load location counter is assumed to be the same as the runtime location counter ORG PI OVL1 Y Indicates code will be generated for an overlay The runtime memory space is P and the default counter is used as the runtime location counter It will be reset to the value of OVL1 If the assembler is in absolute mode via the A command line option then OVL1 must be an absolute expression If OVL1 is an absolute expres sion the assembler uses the absolute runtime location counter If OVL1 is a relo catable value the assembler uses the relative runtime location counter In this case OVL1 must not itself be an overlay symbol e g defined within an overlay block The load memory space is Y Since neither H L nor any counter expression was specified as the load counter the default load counter counter 0 will be used as the load location counter The counter value and mode will be whatever it was the last time it was referenced ORG XL E8 Sets the runtime memory space to X Selects the L counter counter 1 associated with X spa
72. m is the maximum address of the target DSP Invalid source address mode The source address mode in a MOVEP instruction was not valid Invalid source address register Invalid source register The source register in a double memory read operation was not valid Invalid storage class The storage class given in a source level debug symbol declaration is unknown Invalid tabs stops specified The argument to the TAB directive is out of range 212 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Invalid X field destination address mode Invalid X field source address mode The address mode in the source or destination of the X data move field was invalid Invalid X field width specified Invalid Y field width specified The argument given to the LSTCOL directive does not allow enough room on the listing line for the remaining fields to be output Invalid XY address register specification In some XY memory parallel data moves if the register forming the effective ad dress of the X data field is from the set RO R3 the effective address register in the Y field must be from the set R4 R7 Conversely if the register forming the effective address of the X data field is from the set R4 R7 the effective address register in the Y field must be from the set RO R3 Invalid XY data register specification In some XY memory parallel data moves if the data register of the X data field is from the set DO D3
73. memory internal E exter nal R ROM A port A B port B If not present no explicit mapping is done lt gt absolute integer expression representing the counter number to be used as the load location counter Must be enclosed in parentheses Should not exceed the value 65535 lt 2 gt Initial value to assign to the load counter used as the llc If lt exp2 gt isa relative expression the assembler uses the relative location counter lt 2 gt is an absolute expression the assembler uses the absolute loca tion counter If exp2 is not specified then the last value and mode that the counter had will be used The ORG directive is useful in multi programmer projects because it provides a means for the individual programmer to specify in which memory space and which segment of that memory space the code being written will be located without specifying an absolute ad dress Absolute address assignment can be deferred until the various components of the program are brought together The utility of the ORG directive is not limited to multi pro grammer projects Even in single programmer projects the ORG directive supports ma nipulation of overlays and the intermixing of label definition and code generation in multiple memory spaces without having to reinitialize a location counter every time the load memory space is changed 4 5 2 Overlays If the last half of the operand field in a
74. name No section name was given as an argument to the SECTION directive Missing size argument No size value was given as an argument to the SIZE directive Missing string after concatenation operator The string concatenation operator must be followed by another quoted string Missing symbol name The SYMOBJ XDEF and XREF directives require at least one symbol name as an argument Missing symbol value No symbol value was given as an argument to the VAL directive Missing tag for end of structure or union A source level debug structure or union declaration was found without a corre sponding tag definition Missing tag name No tag name was given as an argument to the directive Mnemonic must indicate precision using S or X suffix Floating point instructions generally must indicate the precision of their operation by appending either S for single precision or X for single extended precision Mode not specified The MODE directive was not followed by either RELATIVE or ABSOLUTE Move from SSH or SSL cannot follow move to SP Move from SSH or SSL cannot follow update to SP A MOVE instruction using the system stack SSH or SSL as a source operand cannot immediately follow a MOVE which uses the stack pointer SP as a desti nation operand _ _ DSP ASSEMBLER REFERENCE MANUAL 217 Appendix ASSEMBLER MESSAGES MU option must be u
75. relocation section number long int flags Section type flags struct mematt mem Section memory attributes Unused zero filled Figure E 19 Relocatable Section Auxiliary Entry The logical section number is the ordinal related to a SECTION directive in the assembler source file The relocation section number usually is the same as the logical section num ber but may be different if the logical section is static within an enclosing section The memory mapping is an alternate encoding of the CORE ADDR information in the section header Section type flags indicate whether this COFF section represents a buffer or overlay block If the current COFF section is a buffer or overlay block a third auxiliary entry is produced The layout of that entry is shown in Figure E 19 Declaration Name Description long int bufcnt Buffer section number long int buftyp Buffer type long int buflim Buffer limit struct mematt Overlay memory attributes long int ovlcnt Overlay section number long int ovistr Overlay origin expression Unused zero filled Figure E 20 Relocatable Buffer Overlay Auxiliary Entry Buffers and overlays are mutually exclusive so their respective fields share storage space in the object file The buffer section number is really the buffer instance count in this file _ _ lt _ 274
76. selection in the Files menu this will leave a shadow icon of the destination disk Insert the source diskette open it then drag the assembler executable into the shadow icon of the destination diskette The machine will begin reading from the source diskette and will display a dialogue box when it is ready to write the destination diskette Put the assembler distribution diskette in a safe place as a backup For hard disks create a folder where the assembler can reside and copy the executable file into it Alternatively copy the assembler executable into the MPW tools folder so that itis readily accessible by the MPW shell Again keep the assembler distribution diskette in a safe place as a backup G 4 3 Source File Text Input to the assembler should be in a standard ASCII text file with carriage return charac ters ASCII CR ODH as line terminators This type of file is created by most standard text editing programs used on the Macintosh such as TeachText or the Macintosh Program mer s Workshop editor Using word processing packages for creating assembler input source files is a little more involved but can certainly be done Word processing packages use special character en codings to indicate format and font settings margins indentation and so forth In some cases these special encodings violate the input requirements of the assembler and must be removed or changed Microsoft Word allows the programmer to save a file as plain
77. separated by commas with no intervening white space can be specified optionally to describe the nature of the generated error A label is not allowed with this directive See also MSG WARN EXAMPLE FAIL Parameter out of range a 122 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES FORCE Set Operand Forcing Mode FORCE SHORT LONG NONE The FORCE directive causes the assembler to force all immediate memory and address operands to the specified mode as if an explicit forcing operator were used Note that if a relocatable operand value forced short is determined to be too large for the instruction word an error will occur at link time not during assembly Explicit forcing operators over ride the effect of this directive A label is not allowed with this directive See also lt gt lt gt EXAMPLE FORCE SHORT force operands short C MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 123 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES GLOBAL Global Section Symbol Declaration GLOBAL lt symbol gt lt symbol gt lt symbol gt The GLOBAL directive is used to specify that the list of symbols is defined within the cur rent section and that those definitions should be accessible by all sections This directive is only valid if used within a program block bo
78. smaller buffers within the section are properly aligned If any buffers in the section are auto aligned they will be relocated independent of any other code or data in the section Note that reposi tioning of any buffer whether relocatable or absolute may result in alignment gaps in memory depending on the layout of data surrounding the buffer blocks 4 6 EXAMPLE 1 MULTI PROGRAMMER ENVIRONMENT Typical multi programmer projects are often split into tasks representing functional units For discussion purposes suppose a project has been divided into three tasks I O FILTER and MAIN Each task will be written by a separate programmer as a separate 50 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT section For example when the I O task has been written there will be a file called IO ASM This file will have the following form SECTION XREF PORT O PORT ORG XL storage location definitions ORG P O section source statements ENDSEC In this example because the X space storage locations were defined within the section O they will be private storage locations that are accessible only by the O handler and cannot be referenced by other sections If global memory resource management is de sired then the O section would not have defined any storage locations and these would have been defined as XREF The X space data will be
79. status flags Depending on how the object file was generated the optional header holds link or run time information The optional header is followed by a list of section headers Each section header contains pointers to section data relocation information and line number entries After the section headers comes the raw data for all sections If the object file is relocatable the raw data may be followed by a block of relocation entries for all sections If the original source file was compiled or assembled with the G debug option the relocation information is followed by source line number address entries The symbol table contains information on program symbols use ful by both the linker and the debugger The string table may contain very long symbolic names comment text or relocation expressions Note that the last four groups relocation info line number entries symbol table and string table may not appear if the linker S option is used to strip symbols from the object file 254 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 3 OBJECT FILE COMPONENTS Following are detailed descriptions of each of the DSP COFF object file components The descriptions include the purpose of the component its structure in the object file and meanings of individual fields within the component E 3 1 File Header The file header is the first component in a COFF object file It contains information abou
80. the underscore character SYMOBJ symbol must be a global symbol name Arguments to the SYMOBJ directive cannot be preceded by an underscore DI X I cCLULULLLLLLu LLLLNLALL L LALAZZLLLLLLLLLLLLIIT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 225 Appendix ASSEMBLER MESSAGES Syntax error expected In an ORG directive using numeric counter designations the parenthesis colon pair separating the load or runtime address from the memory space counter or map ping characters was not found Syntax error expected In an ORG directive the colon separating the load or runtime address from the memory space counter or mapping characters was not found Syntax error expected gt The closing angle bracket in a non local INCLUDE directive argument was not found Syntax error expected comma The comma separating operands in an instruction or directive was not found Syntax error expected keyword BY In a FOR structured control statement something other than the optional step clause preceded by the keyword BY was encountered Syntax error expected keyword DO In a WHILE structured control statement something other than the optional DO keyword was encountered at the end of the statement Syntax error expected keyword TO or DOWNTO In a FOR structured control statement something other than the loop target clause preceded by the keyword TO or DOWNTO was encountered Syntax error expected qu
81. the LSTCOL directive does not allow enough room on the listing line for the remaining fields to be output Invalid page length specified The minimum page length allowed by the PAGE directive is 10 lines per page The maximum is 255 Invalid page width specified The minimum page width allowed by the PAGE directive is 1 column per line The maximum is 255 IX LUUHULU LLALAAAZAAZAZZZZZZAAZAAZA LALALLLALLLLLLLLLIISLT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 211 Appendix ASSEMBLER MESSAGES Invalid radix expression The expression in the RADIX directive does not evaluate to one of the supported constant bases 2 8 10 or 16 Invalid register combination The source operand registers in a FMPY instruction cannot be used together Invalid register specified The direct register operand is incorrect for this instruction Invalid relative expression The terms of a relative expression may only participate in addition and subtraction operations and must have opposing signs Invalid secondary opcode The opcode in the second operation field is not one of the instructions FADD FSUB or FADDSUB Invalid section directive modifier The qualifier specified in a SECTION directive was not either GLOBAL or STATIC Invalid section name Section names cannot be local symbols e g they cannot begin with the under score character Invalid shift amount A shift expression must evaluate to within the range 0 lt n lt m where
82. the lines DUP COUNT ASR BY COUNT ENDM will only be shown on the source listing if the MD option is enabled The lines ASR DO ASR DO ASR DO will only be shown on the source listing if the MEX option is enabled See the OPT directive in this chapter for more information on the MD and MEX options _ __ DSP ASSEMBLER REFERENCE MANUAL 109 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DUPA Duplicate Sequence With Arguments lt label gt DUPA lt dummy gt lt arg gt lt lt arg gt lt arg gt ENDM The block of source statements defined by the DUPA and ENDM directives will be repeat ed for each argument For each repetition every occurrence of the dummy parameter within the block is replaced with each succeeding argument string If the argument string is a null then the block is repeated with each occurrence of the dummy parameter re moved If an argument includes an embedded blank or other assembler significant char acter it must be enclosed with single quotes lt label gt if present will be assigned the value of the runtime location counter at the start of the DUPA directive processing See also DUP DUPC DUPF ENDM MACRO EXAMPLE If the input source file contained the following statements DUPA VALUE 12 32 34 DC VALUE ENDM then the assembled source listing would show DUPA VALUE 12 32 34 DC 12 DC 32 DC 34 ENDM
83. the load memory space and counter is not specified then the assembler will assume that the load memory space and load location counter are the same as the runtime memory space and runtime loca tion counter In this case object code is being assembled to be loaded into the address and memory space where it will be when the program is run and is not an overlay If the load memory space and counter are given in the operand field then the assembler always generates code for an overlay Whether the overlay is absolute or relocatable de pends upon the current operating mode of the assembler and whether the load counter value is an absolute or relative expression If the assembler is running in absolute mode or if the load counter expression is absolute then the overlay is absolute If the assembler is in relative mode and the load counter expression is relative the overlay is relocatable Runtime relocatable overlay code is addressed relative to the location given in the runtime A 148 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES location counter expression This expression if relative may not refer to another overlay block See also MODE EXAMPLES ORG P 1000 Sets the runtime memory space to P Selects the default runtime counter counter 0 associated with P space to use as the runtime location counter and initializes it to 1000 The load memory space is implied to be P and the
84. the program counter value falls within the reserved range S Print symbol table at the end of the source listing This option has no effect if the CRE option is used SCL default reset Structured control statements generate non local labels that ordinarily are not visible to the programmer This can create problems when local labels are interspersed among structured control statements This op tion causes the assembler to maintain the current local label scope when a structured control statement label is encountered DSP ASSEMBLER REFERENCE MANUAL 145 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SCO Send structured control statement labels to object and listing files Normally the assembler does not externalize these labels This option must appear be fore any symbol definition SI DSP56000 only Interpret an eight bit short immediate value moved to a frac tional register as a long unless forced short DSP56100 only Interpret eighth bit of short immediate as implied sign exten sion SO Write symbol information to object file This option is recognized but performs no operation in COFF assemblers SVO Preserve object file on errors Normally any object file produced by the as sembler is deleted if errors occur during assembly This option must be given before any code or data is generated U Print the unassembled lines skipped due to failure to satisfy the condition of a conditiona
85. to assume characteristics of sections such as their order their location in the object file or the address at which they are to be loaded This information is available only after the DI E E ECCLLLLLLLLLLLLLLLLLLLLLLULLLLUUULLLLLLLLLLLLLLUAT 258 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF object file has been created Programs manipulating COFF files should obtain it from file and section headers in the file 3 31 Section Headers Every object file has a table of section headers to specify the layout of data within the file The section header table consists of one entry for every section in the file The informa tion in the section header is described in Figure E 6 Declaration Description char s name Section name null padded CORE ADDR 5 Physical address CORE ADDR s vaddr Virtual address long int S Size Section size in words long int 5 scnptr File pointer to raw data long int s relptr File pointer to relocation entries long int s Innoptr File pointer to line number entries unsigned long s nreloc Number of relocation entries unsigned long s nlnno Number of line number entries long int s flags Section flags see Figure E 7 Figure E 6 Section Header Format The section name is an 8 byte character array padded with null zero bytes if required In Motorola relocatable object files section names may be
86. type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X Y P rogram E MI or N one only N is fully compatible OOS 204 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix C ASSEMBLER MESSAGES with all other attributes In this case two operands were evaluated with different memory space attributes neither of which was N Expression must be greater than zero Some directives require a nonzero argument as for example in the BSC directive Expression result must be absolute Certain directives and some assembler usage require absolute values as argu ments or operands Expression result must be integer Certain directives and some assembler usage require integer values as arguments or operands Expression result too large The expression evaluated to a value greater than the acceptable range This error can occur when an expression result exceeds the native word size of the target DSP External reference not allowed in expression References to external symbols e g symbols not defined in the current assembly source input are not allowed in some types of byte or integer expressions External reference not allowed in function References to external symbols e g symbols not defined in the current assembly source input are not allowed as direct or indirect arguments to any built in function Extra characters beyond expression The expression evaluator foun
87. was not one of M mod ulo or R reverse carry Invalid conditional register transfer syntax The syntax for an or FFcc conditional address register move was incorrect Invalid destination register The first data move destination register in a double memory read operation was not valid D XC X XCLXLAR CO OUOUUAADLDAALALLLLUOGOGo LLAALLLLLLLLLLLLLLLLLLA ILZIT 210 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Invalid dummy argument name Macro argument names cannot be local symbols e g they cannot begin with the underscore character Invalid force type The argument to a FORCE directive must be SHORT LONG or NONE Invalid function name The name following the function invocation character was not recognized Invalid label field width specified The argument given to the LSTCOL directive does not allow enough room on the listing line for the remaining fields to be output Invalid macro name Macro names cannot be local symbols e g they cannot begin with the underscore _ character Invalid memory space attribute The memory space attribute given is not one of the letters X Y L P or E Invalid mode The mode specified in a MODE directive was not either RELATIVE or ABSO LUTE Invalid opcode field width specified Invalid opcode 2 field width specified Invalid operand field width specified Invalid operand 2 field width specified The argument given to
88. 0 9108 08461860 Sl 691 191 00200000 89 49 00000000 99 00000000 69 79 9 ov Lv 07 66 46 96 EEEEEE 1344 1 ul 29 00 81 20 60 68 0071 Jejquiessy 55010 OILEN 00096450 0100 241 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT 1euuoJ Buns Jejquiessy q 4 9 qe1 euisoo euis ui sjuiod jo 9754900 euisoo euis 2 2 2 1 JO 1918 19002 Jojjnq eyep jo yels 1e od siuiod jo Jaquinu sjulod ozisjooo jeoo ejep siulod egau Z sjulod eq ued 9215 A ul 2 1 enjeA x 2 1 9 1505 giqe ejep 1ndino indui A x ui elep 1ndino pue xejduuo 121 041 691 891 191 991 991 91 29 29 191 091 691 89 191 99 SSI 1334 1 ul use 0 00 61 20 60 68 00 uoisjeA 5 55040 000964501 LIION MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 242 Appendix D ASSEMBLER LISTING FILE FORMAT
89. 00000 jul 19891 0 1000000 jul DIET sjuiod 00000000 jul DID eyep 0 1000000 1 1609 adh Sjoqui S og emm Sur 1344 1 ul 6 use 15 00 91 20 20 68 0071 UOISIaA 1e quuessy 55010 000964501 LIOIN 247 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT Buns 585015 18 quiessy z q 2614 S8V 89 99 ues 961 ozis c9 661 866 61 96 YS 91 109 si aur 901 19491 88010 00200000 10 yes 80000000 M RUNI RR RR n AR i o 9215 1334 1 ul 01 use 76 00 59 20 20 68 001 UOISIAA 550 0 000964501 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 248 Appendix D ASSEMBLER LISTING FILE FORMAT epoodo pue1edo Jejsue1 X A s p QJ s pp p x uononuisu Jeg uno eAne nuino uno Jeqe eur Bugs jej quiessy 2 ni JequinN eur Jopeoipu uoisuedx3
90. 11 G 4 3 SOURCE File TOXI 22 ated a erede Ok E REPRE 311 G 4 4 Invoking the Assembler 312 ___ ______ _ ________ _______ __ ___ OO DSP ASSEMBLER REFERENCE MANUAL xi TABLE OF CONTENTS Continued Paragraph Page Number Title Number _______ __ ____ ___ _______ Y T e xii DSP ASSEMBLER REFERENCE MANUAL MOTOROLA 1 MOTOROLA DSP ASSEMBLER 1 1 INTRODUCTION The Motorola DSP Assemblers are programs that process assembly language source statements written for Motorola s family of digital signal processors The assembler trans lates these source statements into object programs compatible with other Motorola DSP software and hardware products 1 2 ASSEMBLY LANGUAGE The assembly language provides mnemonic operation codes for all machine instructions in the digital signal processor instruction set In addition the assembly language contains mnemonic directives which specify auxiliary actions to be performed by the assembler These directives are not always translated into machine language The assembly lan guage enables the programmer to define and use macro instructions which replace a sin gle statement with a predefined sequence of statements found in the macro definition Conditional assembly also is supported 1 3 INSTALLING THE ASSEMBLER The assembler is distributed on various media and in different formats depending
91. 2 FIR FILTER MODULE then the object module identification record would include the module name FFILTER the version number 1 the revision number 2 and the comment field FIR FILTER MODULE DSP ASSEMBLER REFERENCE MANUAL 127 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES IF Conditional Assembly Directive IF expression ELSE the ELSE directive is optional ENDIF Part of a program that is to be conditionally assembled must be bounded by an IF ENDIF directive pair If the optional ELSE directive is not present then the source statements following the IF directive and up to the next ENDIF directive will be included as part of the source file being assembled only if the expression has a nonzero result If the expres sion has a value of zero the source file will be assembled as if those statements be tween the IF and the ENDIF directives were never encountered If the ELSE directive is present and expression has a nonzero result then the statements between the IF and ELSE directives will be assembled and the statements between the ELSE and ENDIF directives will be skipped Alternatively if expression has a value of zero then the statements between the IF and ELSE directives will be skipped and the statements be tween the ELSE and ENDIF directives will be assembled The expression must have an absolute integer result and is considered true if
92. 23 185 GLOBAL YS 73 124 186 vuv d dr 73 125 186 HIMEM 72 126 185 IDENT iet t ros 74 127 187 69 74 128 187 MIO da oret Oo 142 INCLUDE 72 129 185 EIS 73 130 186 314 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA listing control LOMEM LSTCOL MACLIB NOLIST object file OPT SCSJMP SCSREG SECTION SET STITLE structured control symbol definition SYMOBJ condition code instruction set register DSP5616 condition code instruction set register MOTOROLA RDIRECT DSP56000 73 133 186 6 62 74 134 187 45 72 147 185 73 151 186 DIO 74 158 187 quera 73 154 186 Vua dosing 72 155 185 IM 61 72 156 185 Pere Rat 72 157 185 TT 72 158 185 73 159 186 41 73 162 186 CR 73 165 186 73 166 186 TOT 72 167 185 PE 72 168 185 Ax 40 73 169 186 DSP ASSEMBLER REFERENCE MANUAL DSP96000 295 condition code 300 instruction Set 295 Leer ade 299 DSPASMOPT 2 Environment variable 2 Error command line 190 d runt ua dde fd d 230 OUTPUT Pr PR 4 EXDIGSSIOIT eeu wet mi
93. 3 EXPRESSIONS POW lt expr1 gt lt expr2 gt Returns lt expr1 gt raised to the power expr2 as a floating point value expri and expr2 must be separated by a comma The memory space attribute of the result will be None Example BUF EQU QOVI QPOW 2 0 3 0 BUF 8 REL Returns an integer 1 memory space attribute N if the assembler is operating in relative mode 0 otherwise Example IF REL relative mode RND Returns a random value in the range 0 0 to 1 0 The memory space attribute of the result will be None Example SEED DC RND save initial seed value RVB lt expr1 gt lt expr2 gt Reverse the bits in lt 1 gt delimited by the number of bits in lt expr2 gt If lt expr2 gt is omitted the field is bounded by the target word size Both expressions must be single word integer values Example REV EQU RVB VAL reverse all bits in value QSCP str1 str2 Returns an integer 1 memory space attribute N if the two strings compare 0 oth erwise The two strings must be separated by a comma Example IF SCP STR MAIN does STR equal MAIN 36 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS SGN lt expression gt Returns the sign of lt expression gt as an integer 1 if the argument is negative 0 if zero 1 if positive The memory space attribute of the result will be None The lt ex pression gt may be relative
94. 7 turn eighth bit on FLR lt expression gt Returns a floating point value which represents the largest integer less than or equal to lt expression gt The memory space attribute of the result will be None Example FLOOR SET FLR 2 5 FLOOR 2 0 FRC lt expression gt For binary fractional DSPs DSP56000 this functions performs scaling and con vergent rounding to obtain the fractional representation of the floating point lt ex pression gt as an integer For floating point DSPs DSP96000 this function simply returns the binary representation of lt expression gt as an integer The memory space attribute of the result will be None Example FRAC EQU FRC FLT 1 compute saturation INT lt expression gt Returns an integer 1 memory space attribute N if lt expression gt has an integer re sult 0 otherwise The lt expression gt may be relative or absolute Example IF INT TERM insure integer value L10 lt expression gt Returns the base 10 logarithm of lt expression gt as a floating point value lt expres sion gt must be greater than zero The memory space attribute of the result will be None Example LOG EQU L10 100 0 LOG 2 EEE 32 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS LCV L lt expression gt If 15 specified as the first argument returns the memory space attribute and value of the load location counter If R is specified retu
95. ANUAL 209 Appendix ASSEMBLER MESSAGES Indexed address mode not allowed XY parallel data moves and the LEA instruction do not allow indexed addressing mode Initial debug directive must be FILE In a source file containing debug directives being assembled with the G option the FILE directive must be the first source level debug directive in the input stream Instruction cannot appear at last address of a DO loop Instruction cannot appear at next to last address of a DO loop Instruction cannot appear within last 2 words of a DO loop Instruction cannot appear within last 3 words of a DO loop Some instructions are restricted within a variable range of the DO instruction loop address These instructions include DO ENDDO JMP Jcc JCLR JSET and moves to or from particular control registers Instruction cannot appear immediately after control register access Some instructions must not appear immediately after certain control registers have been accessed These instructions include RTI RTS DO and ENDDO Instruction does not allow data movement specified The desired operation may only be done with a MOVE instruction Invalid address expression An attempt was made to evaluate an expression consisting of two relative terms with the same sign Invalid addressing mode The addressing mode of one of the operands in the instruction was not recognized Invalid buffer type The buffer type specified in a BADDR or BUFFER directive
96. ASCII text Select Save As from the Files pull down menu then click the File Format button The program will display a list of format options Select Text Only click OK then save as usual ICLLLLLGLLLLLLLL ALLLBLLLLOOI MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 311 Appendix G HOST DEPENDENT INFORMATION G 4 4 Invoking the Assembler Clicking the assembler tool icon brings up MPW and the MPW shell a Unix like command interpreter for the Macintosh The assembler is invoked from the MPW shell by entering the name of the assembler executable followed by any desired options and finally the names of the source files to be assembled See Chapter 1 RUNNING THE ASSEM BLER for a list of options which can be included on the command line As an example if the assembler executable was located in a folder listed in the MPW PATH environment variable the following command would assemble the file myfile asm in the current folder putting the object file myfile in the objects folder and the listing file outfile into the listings folder asm56100 b objects myfile cin L listings outfile lst Since MPW supports standard input and output channels in the example above any warning or error messages would appear both in the listing file and on the standard output by default the MPW shell command window MPW also supports I O redirection so that the assembler listing can be sent to a file or arbitrary output device Assume a user
97. BLER REFERENCE MANUAL 263 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Filename 1 Function 1 Local symbols for function 1 Function 2 Local symbols for function 2 Statics Filename 2 Function 1 Local symbols for function 1 Statics Defined global symbols Undefined global symbols Figure E 11 COFF Symbol Table Ordering The entry for each symbol is a structure that holds the symbol value its type and other information There are symbol table entries used for relocation and linking and there are special symbols used only for debugging The two kinds of entries are distinguished by combinations of field values in the symbol record The structure of a symbol table entry is illustrated in Figure E 12 264 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Declaration Name Description char n name Symbol name null padded long int n zeroes Zeroin this field indicates name is in string table long int n offset Offset of name in string table CORE ADDR n address Symbol address value unsigned long n val 2 Symbol value long int n scnum Symbol section number unsigned long n type Symbol basic and derived type long int n sclass Symbol storage class long int n numaux Number of auxiliary entries Figure E 12 Symbol Table Entry Format E 3 4 1 Symbol Name The first eight
98. BUGcc Enter debug mode conditionally ILLEGAL Illegal instruction interrupt Jcc Jump conditionally JCLR Jump if bit clear JMP Jump JScc Jump to subroutine conditionally JSCLR Jump to subroutine if bit clear JSET Jump if bit set JSSET Jump to subroutine if bit set JSR Jump to subroutine NOP No operation REP Repeat next instruction RESET Reset on chip peripheral devices RTI Return from interrupt RTS Return from subroutine STOP Stop processing low power standby SWI Software interrupt WAIT Wait for interrupt low power standby Instruction allows parallel data move _ _________________________ _______________________________________________ ___________________ 292 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 2 2 Register Names and Usage The following DSP56000 register names in either upper or lower case cannot be used as symbol names in an assembly language source file X A AB X0 AO BA 1 1 10 Y B B10 YO BO A2 Y1 B1 B2 RO NO MO MR R1 N1 M1 CCR R2 N2 M2 SR R3 N3 M3 LC RA M4 LA R5 N5 M5 SSH R6 N6 M6 SSL R7 N7 M7 OMR The following DSP56000 registers are used by the assembler in structured control state ment processing Chapter 7 A YO F 2 3 Condition Code Mnemonics Following are the DSP56000 condition code mnemonics which correspond to the condi tional instructions based on the CCR cond
99. DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Buffer type is either modulo or reverse carry The buffer limit gives the upper bound for the buffer size even though the block may contain less initialized data than this limit sug gests The overlay memory structure gives the runtime memory attributes for this block The overlay section number is really the overlay instance count in this file The overlay origin expression is the expression given for the runtime counter in the assembler ORG directive see Chapter 6 E 3 4 6 3 Tag Names Auxiliary entries for C language structure and union tag names have the format described in Figure E 21 Note that in Motorola DSP COFF the size of the associated structure or union is in words as opposed to bytes as in standard COFF The x endndXx field is used to create a linked list of tag name entries through the symbol table Declaration Description Unused zero filled unsigned long Size of structure union or enumeration in words Unused zero filled long int x endndx Index of next structure union or enumeration entry Unused zero filled Figure E 21 Tag Name Symbol Auxiliary Entry E 3 4 6 4 End of Structures The format for C language end of structure auxiliary entries is given in Figure E 22 Note that the size of the structure union or enumeration is given in words rather than bytes The tag index hold
100. DUCTION oA eod y od sun feo 1 1 2 ASSEMBLY LANGUAGE d a ket dca OR UE 1 1 3 INSTALLING THE ASSEMBLER ud 5352 22345 39 ets 1 1 4 RUNNING THE ASSEMBLER ers n cut 1 1 5 ASSEMBLEFUPROGESSIN ka teas DIO E PA 9 1 6 DEFINITION OF TERMS nex 9 1 7 ASSEMBLER SUPPORT FOR DIGITAL SIGNAL PROCESSING 10 Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS 2 1 INPUT FILE FORMAT aix api 13 2 2 SYMBOL NAMES uber that Mte eee ie Mob Me fe t e 13 2 3 STRINGS assed wg ete ert bree OS E ecl VIA snb i Lat ara EU 14 2 4 SOURCE STATEMENT FORMAT 14 2 4 1 kabel oM Tc 15 2 4 2 Operation RNC E n 16 2 4 3 Oberand Field ss E eee ARES LPS 17 2 4 4 Operation 2 NODE 17 2 4 5 Oberafid 2 Field dun SX dO ES eres 17 2 4 6 Data TransferElelds eas x 17 2 4 7 Comment PICA 4 Re Ses A wed 18 2 5 ASSEMBLER OU TRUM ee de Gouin ania 18 Chapter 3 EXPRESSIONS 3 1 INGE PRODUCTION EU Sae t A e ertt e 19 3 2 ABSOLUTE AND RELATIVE 55 5 19 3 3 EXPRESSION MEMORY SPACE ATTRIBUTE 19 3 4 INTERNAL EXPRESSION REPRESENTATION
101. EEE 110 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Note that the lines DUPA VALUE 12 32 34 ENDM will only be shown on the source listing if the MD option is enabled The lines DC 12 DC 32 DC 34 will only be shown on the source listing if the MEX option is enabled See the OPT directive in this chapter for more information on the MD and MEX options _ _ _ MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 111 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DUPC Duplicate Sequence With Characters lt label gt DUPC lt dummy gt lt string gt ENDM The block of source statements defined by the DUPC and ENDM directives will be repeat ed for each character of lt string gt For each repetition every occurrence of the dummy parameter within the block is replaced with each succeeding character in the string If the string is null then the block is skipped lt label gt if present will be assigned the value of the runtime location counter at the start of the DUPC directive processing See also DUP DUPA DUPF ENDM MACRO EXAMPLE If input source file contained the following statements DUPC VALUE 123 DC VALUE ENDM then the assembled source listing would show DUPC VALUE 123 DC 1 2 3 ENDM Note that the lines DUPC VALUE 123 ENDM will only be shown on the source listing i
102. EG Reassign structured control statement registers UNDEF Undefine DEFINE symbol WARN Programmer generated warning EEE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 185 Appendix B DIRECTIVE SUMMARY B 2 SYMBOL DEFINITION The directives used to control symbol definition are ENDSEC End section EQU Equate symbol to a value GLOBAL Global section symbol declaration GSET Set global symbol to a value LOCAL Local section symbol declaration SECTION Start section SET Set symbol to a value XDEF External section symbol definition XREF External section symbol reference B 3 DATA DEFINITION STORAGE ALLOCATION The directives used to control constant data definition and storage allocation are BADDR Set buffer address BSB Block storage bit reverse BSC Block storage of constant BSM Block storage modulo BUFFER Start buffer DC Define constant DCB Define constant byte DS Define storage DSM Define modulo storage DSR Define reverse carry storage ENDBUF End buffer B 4 LISTING CONTROL AND OPTIONS The directives used to control the output listing are LIST List the assembly LSTCOL Set listing field widths NOLIST Stop assembly listing OPT Assembler options PAGE Top of page size page PRCTL Send control string to printer STITLE Initialize program subtitle TABS Set listing tab stops TITLE Initialize program title 186 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA
103. EG2_ swap REG1 REG2 using D4 L as temp MOVE R REG1 D4 L MOVE R REG2 R REG1 MOVE 04 2 If the source file contained the following SET statements and macro call AREG SET 0 BREG SET 1 SWAP SYM AREG BREG the resulting expansion as it would appear on the source listing would be MOVE RO0 D4 L MOVE R1 RO MOVE DA L R1 58 2 2 12 __________ d 80 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES 926 Return Hex Value of Symbol Character The lt symbol gt sequence when used in macro definitions will be replaced by an ASCII string representing the hexadecimal value of symbol This operator may be used in as sociation with the backslash 1 operator The value of symbol must be an integer not floating point EXAMPLE Consider the following macro definition GEN LAB MACRO LAB VAL STMT LAB VAL STMT ENDM If this macro were called as follows NUM SET 10 GEN LAB HEX NUM NOP The resulting expansion as it would appear in the listing file would be HEXA NOP MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 81 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Macro Local Label Override The circumflex when used as a unary expression operator in a macro expansion will cause any local labels in its associated term to be evaluated at normal scope rather than ma
104. EMBLER MESSAGES C 1 INTRODUCTION Assembler messages are grouped into four categories Command Line Errors These errors indicate invalid command line options missing filenames file open errors or other invocation errors Command line errors generally cause the as sembler to stop processing Warnings Warnings notify the programmer of suspect constructs but do not otherwise affect the object file output Errors These errors indicate problems with syntax addressing modes or usage In these cases the resulting object code is generally not valid Fatal Fatal errors signify serious problems encountered during the assembly process such as lack of memory file not found or other internal errors The assembler halts immediately The assembler also will provide information on the source field location of the error if it can be ascertained If a listing file is produced messages ordinarily will appear immedi ately before the line containing the error One exception is when the relationship between the first and last instructions in a DO loop produces an error In this case the error text will appear after the last instruction at the end of the loop Messages are always routed to standard output DSP ASSEMBLER REFERENCE MANUAL 189 Appendix ASSEMBLER MESSAGES C 2 COMMAND LINE ERRORS Cannot open command file Cannot open listing file Cannot open object file The file associated with a F L or B
105. ER REFERENCE MANUAL 147 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Ims Which memory space X Y L P or E will be used as the load memory space If the memory space is L any allocated datum with a value greater than the target word size will be extended to two words otherwise it is trun cated If the memory space is E then depending on the memory space qual ifier any generated words will be split into bytes one byte per word or a 16 8 bit combination llc Which load counter H L or default if neither H or L is specified that is as sociated with the Ims will be used as the load location counter Imp Indicates the load physical mapping to DSP memory internal E exter nal R ROM A port A B port B If not present no explicit mapping is done lt gt absolute integer expression representing the counter number to be used as the load location counter Must be enclosed in parentheses Should not exceed the value 65535 lt gt Initial value to assign to the load counter used as the llc If lt exp2 gt isa relative expression the assembler uses the relative location counter lt 2 gt is an absolute expression the assembler uses the absolute loca tion counter If exp2 is not specified then the last value and mode that the counter had will be used If the last half of the operand field in an ORG directive dealing with
106. ES MSG Programmer Generated Message MSG lt str gt lt exp gt lt str gt lt exp gt lt str gt lt exp gt The MSG directive will cause a message to be output by the assembler The error and warning counts will not be affected The MSG directive is normally used in conjunction with conditional assembly directives for informational purposes The assembly proceeds normally after the message has been printed An arbitrary number of strings and expres sions in any order but separated by commas with no intervening white space can be specified optionally to describe the nature of the message A label is not allowed with this directive See also FAIL WARN EXAMPLE MSG Generating sine tables ___ ______ _ ________ _______ EE OOO DSP ASSEMBLER REFERENCE MANUAL 137 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES NOLIST Stop Assembly Listing NOLIST Do not print the listing from this point on including the NOLIST directive Subsequent source lines will not be printed The NOLIST directive actually decrements a counter that is checked for a positive value and is symmetrical with respect to the LIST directive Note the following sequence Counter value currently 1 LIST Counter value 2 LIST Counter value 3 NOLIST Counter value 2 NOLIST Counter value 1 The listing still would not be disabled until another NOLIST directive was issued A label is not allow
107. Exit from hardware loop F 3 1 5 Move Instructions The DSP96000 instructions used for move operations are FTFR Transfer floating point data ALU register LEA Load effective address LRA Load PC relative address MOVE Move data Instruction allows parallel data move OE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 297 Appendix F DEVICE DEPENDENT INFORMATION MOVEC Move control register MOVEI Move immediate short MOVEM Move program memory MOVEP Move peripheral data MOVES Move absolute short MOVETA Move data registers and test address TFR Transfer data ALU register F 3 1 6 Program Control Instructions The DSP96000 instructions used for program control are Bcc Branch conditionally BRA Branch always BRCLR Branch if bit clear BRSET Branch if bit set BScc Branch to subroutine conditionally BSCLR Branch to subroutine if bit clear BSR Branch to subroutine BSSET Branch to subroutine if bit set DEBUGcc Enter debug mode conditionally FBcc Floating point branch conditionally FBScc Floating point branch to subroutine conditionally FDEBUGcc Enter debug mode conditionally FJcc Floating point jump conditionally FJScc Floating point jump to subroutine conditionally FTRAPcc Floating point conditional software interrupt ILLEGAL Illegal instruction interrupt Jcc Jump conditionally JCLR Jump if bit clear JMP Jump JScc Jump to subroutine conditionally J
108. F format has been altered to support multiple memory spaces and normalized to promote transportability of object files among host processors See section E 4 for a list of differences between the Motorola DSP object file format and stan dard COFF For a more general discussion of COFF the following reference may be use ful Gintaras R Gircys Understanding and Using COFF O Reilly amp Associates 1988 ISBN 0 937175 31 5 E 2 OBJECT FILE STRUCTURE A DSP COFF object file consists of up to eight groups of object file information Some of these groups are optional depending on the type of object file generated and others may have repeating occurrences The basic object file components are File header Optional header Section headers Section data Relocation information Line numbers e Symbol table String table 822 a l MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 253 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF The general layout of the object file is illustrated in Figure E 1 FILE HEADER OPTIONAL HEADER Section 1 Header Section n Header Section 1 Contents Section n Contents Section 1 Relocation Info Section n Relocation Info Section 1 Line Numbers Section n Line Numbers SYMBOL TABLE STRING TABLE Figure E 1 COFF File Basic Structure The file header contains object file information such as timestamp number of sections pointer to the symbol table and file
109. FINE directive symbols defined within a section are pri vate to that section and DEFINE directive symbols defined outside of any section are glo bally applied There are no directives that correspond to XDEF for macros or DEFINE symbols therefore macros and DEFINE symbols defined in a section can never be ac cessed globally If global accessibility is desired the macros and DEFINE symbols should be defined outside of any section Here is an example DEFINE DEFVAL 1 SECTION SECT1 DEFINE DEFVAL 2 DEFVAL RO ENDSEC MOVE DEFVAL R1 The second definition of DEFVAL is visible only inside SECT1 so the value moved to RO will be 2 However the second move instruction is outside the scope of SECT1 and will therefore use the initial definition of DEFVAL This means that the value 1 will be moved to R1 4 3 3 Nested and Fragmented Sections Sections can be nested to any level When the assembler encounters a nested section the current section is stacked and the new section is used When the ENDSEC directive of the nested section is encountered the assembler restores the old section and uses it The ENDSEC directive always applies to the most recent SECTION directive Nesting sections provides a measure of scoping for symbol names in that symbols defined within a given section are visible to other sections nested within it For example if section B is nested inside section A then a symbol defined in section A can be used in section B
110. I Lp sjulod 60800800 002000004 261 164 12 16 061 41 4 Je IQIM QIM Je 681 1334 1 ul 9 29 00 81 20 20 68 00 1 550 0 00096450 LION MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 244 Appendix D ASSEMBLER LISTING FILE FORMAT 1euuoJ Buns Jejquiessy q 4 5 049869098 212000004 812 s ep g1 4 s duj 2 226202 912000004 112 5 sop Ly yx 70090000 Vvi200000d 912 pia eyep A DursseJppe Papur 1 51 2 2 WSEH 912 58 4 s ep gu gJ x 70090000 612000004 SIZ A DursseJppe Papu 46151681 HOHH3 2 2 WSEH GLZ s 2200000 916 pue op 28000710 712000004 Ga 14 eal avo9rr00 912000004 2 71 01 eal 00 912000004 212 00 02 eal 12000004 112 Gu Qu 0009d080 12000004 012 yu ou 00024040 212000004 602 00090680 11200000 d 802 OUT Lp 62220680 012000004 202 91 Lp 151 esovgvgO 02000004 902 000 302000004 502 1344 1 ul 4 use 19 00 61 20 20 68 0071
111. In the following sequence of source lines the symbol CNST is known to the assembler on pass one and therefore the assembler would use the short immediate addressing form for the MOVE instruction CNST EQU 5 MOVE CNST DO L If this is not desirable then the long immediate form of addressing can be forced as shown below CNST EQU 5 MOVE gt CNST DO L 5 2 O 94 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES BADDR Set Buffer Address BADDR M R gt lt expression gt The BADDR directive sets the runtime location counter to the address of a buffer of the given type the length of which in words is equal to the value of expression The buffer type may be either Modulo or Reverse carry If the runtime location counter is not zero this directive first advances the runtime location counter to a base address that is a mul tiple of 2K where 2 gt expression An error will be issued if there is insufficient memory remaining to establish a valid base address Unlike other buffer allocation directives the runtime location counter is not advanced by the value of the integer expression in the op erand field the location counter remains at the buffer base address The block of memory intended for the buffer is not initialized to any value The result of lt expression gt may have any memory space attribute but must be a
112. LE FORMAT COFF E 3 4 6 6 Arrays The format for C language array auxiliary entries is given in Figure E 24 The tag index contains the offset to the next array symbol in the symbol table The line number field gives the source file line number for the array declaration Declaration long int x tagndx Description Tag index unsigned long x Inno Line number of array declaration unsigned long X Size Size of array unsigned long x dimen 0 First array dimension unsigned long x dimen 1 Second array dimension unsigned long x dimen 2 Third array dimension unsigned long x dimen 3 Fourth array dimension Unused zero filled Figure E 24 Array Symbol Auxiliary Entry E 3 4 6 7 End of Blocks and Functions The format for C language symbol entries for the end of blocks and functions is given in Figure E 25 Only the source file line number for the end of the block or function is stored Declaration Description Unused zero filled unsigned long Source file line number Unused zero filled Figure E 25 End of Block or Function Auxiliary Entry H loeEE ULLLLL LIALLLAAAALLALAAAEOLD LLLLLLLLLLE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 277 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 3 4 6 8 Beginning of Blocks and Functions The format for C language symbol entries for the beginning of blocks and
113. Liciluiiid C D LDOD ODDIDDhh hXNAAGUGLU L LLLLLLLGTGTZRAALZBLALLLLLLLLLLLLILT 160 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES of a section may be made absolute either implicitly by using the ORG directive or explic through use of the MODE directive A label is not allowed with this directive See also MODE ORG GLOBAL LOCAL XDEF XREF EXAMPLE SECTION TABLES TABLES will be the section name MEC mrl MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 161 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SET Set Symbol to a Value label SET expression SET label expression The SET directive is used to assign the value of the expression in the operand field to the label The SET directive functions somewhat like the EQU directive However labels de fined via the SET directive can have their values redefined in another part of the program but only through the use of another SET directive The SET directive is useful in estab lishing temporary or reusable counters within macros The expression in the operand field of a SET must be absolute and cannot include a symbol that is not yet defined no forward references are allowed See also EQU GSET EXAMPLE COUNT SET 0 INITIALIZE COUNT e 162 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6
114. M meme rl expression The HIMEM directive establishes an absolute high memory bound for code and data gen eration mem corresponds to one of the DSP memory spaces X Y L P E rl is one of the letters R for runtime counter or L for load counter The expression is an absolute integer value within the address range of the machine If during assembly the specified location counter exceeds the value given by expressions a warning is issued A label is not allowed with this directive See also LOMEM EXAMPLE HIMEM XR 7FFF YR 7FFF SET X Y RUN HIGH MEM BOUNDS ___ ____ _____ __ _ ______ __ ______________ 126 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES IDENT Object Code Identification Record lt label gt IDENT lt expression1 gt lt expression2 gt The IDENT directive is used to create an identification record for the object module If lt la bel gt is specified it will be used as the module name If lt label gt is not specified then the filename of the source input file is used as the module name lt expression1 gt is the ver sion number lt expression2 gt is the revision number The two expressions must each evaluate to an integer result The comment field of the IDENT directive will also be passed on to the object module See also COBJ EXAMPLE If the following line was included in the source file FFILTER IDENT 1
115. MBLER REFERENCE MANUAL 173 Chapter 7 STRUCTURED CONTROL STATEMENTS CONTINUE should be used with care near ENDL directives or near the end of DO loops It generates a jump instruction which is illegal in those contexts One or more CONTINUE directives inside a LOOP construct will generate a NOP instruction just before the loop address EXAMPLE REPEAT AF cs CONTINUE causes immediate jump to UNTIL ENDI instructions here are skipped UNTIL x r1 EQ 0 evaluation here after CONTINUE 7 3 3 FOR Statement SYNTAX FOR lt 1 gt op2 DOWNTO lt op3 gt BY lt op4 gt DO lt stmtlist gt ENDF FUNCTION Initialize lt op1 gt to lt op2 gt and perform lt stmtlist gt until lt op1 gt is greater TO or less than DOWNTO lt op3 gt Makes use of a user defined operand lt 1 gt to serve as a loop counter FOR TO allows counting upward while FOR DOWNTO allows counting downward The programmer may specify an increment decrement step size in lt op4 gt or elect the default step size of 1 by omitting the BY clause A FOR TO loop is not executed if lt op2 gt is greater than lt op3 gt upon entry to the loop Similarly a FOR DOWNTO loop is not executed if lt op2 gt is less than lt op3 gt NOTES lt op1 gt must be a writable register or memory location It is initialized at the beginning of the loop and updated at each pass through the loop Any im mediate o
116. MESSAGES short address cannot be forced long substituted short addressing is not valid for this operation The assembler substitutes long addressing Label field ignored The assembler directive does not allow a label so the assembler will not store the label value in the symbol table Load location counter overflow Load location counter underflow The load location counter exceeded its maximum or minimum value The assem bler wraps the counter value around and continues Load origin involves incompatible memory spaces The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X Y L P rogram E MI or N one only N is fully compatible with all other attributes In this case an operand was evaluated with a different memory space attribute than that specified in the directive Load reserved address space violation The load location counter has incremented into a reserved area of data address space Long absolute address cannot be forced Long absolute addressing is not valid for this operation An appropriate addressing mode absolute short jump short absolute is substituted Long absolute address cannot be forced substituting I O short addressing Long absolute addressing is not valid for this operation The assembler substitutes I O short addressing Long absolute address canno
117. MOE Member of enumeration T UCHAR Unsigned character T USHORT Unsigned short T_UINT Unsigned integer T_ULONG Unsigned long Figure E 13 Fundamental Types Bits 4 through 15 are arranged as six 2 bit subfields These subfields represent levels of the derived types given in Figure E 14 EE OO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 267 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Type DT NON No derived type DT PTR Pointer DT FCN Function DT ARY Array Figure E 14 Derived Types As an example of encoding fundamental and derived types consider a function returning a pointer to a character The fundamental type is character giving bits 0 3 of the symbol type field the value 2 Bits 4 5 would hold a 2 for the derived type of function and bits 6 7 would contain a 1 for the pointer derived type The value in the symbol entry type field would result in 9601100010 binary or 62 hexadecimal E 3 4 5 Symbol Storage Class The symbol storage class indicates how a symbol will be used during execution or debug ging Some storage classes actually reflect how a symbol will be stored e g as a register parameter Other storage classes provide information for special symbols used in debug ging such as the beginning of blocks or the end of functions Storage classes are outlined in Figure E 15 n 268
118. MOTOROLA DIGITAL SIGNAL PROCESSING DEVELOPMENT SOFTWARE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL Specification and information herein are subject to change without notice Motorola re serves the right to make changes without further notice to any products described in this document to improve reliability function or design Motorola does not assume any liability arising out of the application or use of any product or circuit described herein neither does it convey any license under its patent rights or the rights of others Motorola is a registered trademark of Motorola Inc Motorola Inc is an Equal Employment Affirmative Action Em ployer This manual documents the assembler as of version 5 3 2 of the software Copyright Motorola Inc 1994 All rights reserved ASM56000 SIM56000 ASM96000 SIM96000 ASM56100 and SIM56100 are trade marks of Motorola MS DOS and Windows are trademarks of Microsoft Corporation Sun 4 and SunOS are trademarks of Sun Microsystems Inc Macintosh and MPW are trademarks of Apple Computer PREFACE Notation The notational conventions used in this manual are DIRECTIVE All assembler mnemonics and directives are shown in bold upper case to highlight them However the assembler will recognize both upper and lower case for mne monics and directives Contains a list of elements or directives one of which must be selected Each choice will be separated by a vertical bar For example R
119. Most opcodes can specify one or more data transfers to occur during the execution of the instruction These data transfers are indicated by two addressing mode operands sepa rated by a comma with no embedded blanks If two data transfers are specified they must be separated by one or more blanks or tabs See the appropriate DSP User s Man ual for a complete discussion of addressing modes that are applicable to data transfer specifications MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 17 Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS 2 4 7 Comment Field Comments are not considered significant to the assembler but can be included in the source file for documentation purposes A comment field is composed of any characters not part of a literal string that are preceded by a semicolon A comment starting in the first column of the source file will be aligned with the label field in the listing file Otherwise the comment will be shifted right and aligned with the comment field in the listing file un less the NOPP option is used see the OPT directive Chapter 6 Comments preceded by two consecutive semicolons will not be reproduced on the assembler listing and will not be saved as part of a macro definition 2 5 ASSEMBLER OUTPUT The assembler output consists of an optional listing of the source program and an optional object file Appendix D contains the description of the source listing format and Appendix E contains the descrip
120. NIFICANT CHARACTERS AND DIRECTIVES lt lt Short Addressing Mode Force Operator Many DSP instructions allow an I O short form of addressing If the value of an absolute address is known to the assembler on pass one then the assembler will always pick the shortest form of addressing consistent with the instruction format If the absolute address is not known to the assembler on pass one that is the address is a forward or external reference then the assembler will pick the long form of addressing by default If this is not desired then the short form of addressing can be forced by preceding the absolute address by the I O short addressing mode force operator lt lt EXAMPLE Since the symbol IOPORT is a forward reference in the following sequence of source lines the assembler would pick the long absolute form of addressing by default BTST 4 IOPORT EQU Y FFF3 Because the long absolute addressing mode would cause the instruction to be two words long instead of one word for the I O short absolute addressing mode it would be desirable to force the I O short absolute addressing mode as shown below BIST 4 Y lt lt IOPORT IOPORT EQU Y FFF3 ___ _______ _ ________ _______ __ ___ DSP ASSEMBLER REFERENCE MANUAL 89 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES lt Short Addressing Mode Force Operator Many DSP instructions allow a short form of addressi
121. NOCC and CONTCC assembler options see the OPT directive The mem ory space attribute of the result will be None Example IF CCC gt 200 cycle count gt 200 CEL lt expression gt Returns a floating point value which represents the smallest integer greater than or equal to lt expression gt The memory space attribute of the result will be None Example CEIL SET CEL 1 05 CEIL 1 0 DSP ASSEMBLER REFERENCE MANUAL 29 Chapter 3 EXPRESSIONS CHK Returns the current instruction data checksum value as an integer Useful in con junction with the CK NOCK and CONTCK assembler options see the OPT direc tive Note that assignment of the checksum value with directives other than SET could cause phasing errors due to different generated instruction values between passes The memory space attribute of the result will be None Example CHKSUM SET CHK reserve checksum value CNT Returns the count of the current macro expansion arguments as an integer A warning will be issued if this function is used when no macro expansion is active The memory space attribute of the result will be None Example ARGCNT SET CNT Squirrel away arg count COH lt expression gt Returns the hyperbolic cosine of lt expression gt as a floating point value The mem ory space attribute of the result will be None Example HYCOS EQU COH VAL compute hyperbolic cosine COS lt
122. O opt opt opt This is equivalent to a source statement of the form lt opt gt lt opt gt lt opt gt opt can be any of the options that are available with the OPT directive see Chapter 6 If multiple options are specified they must be separated by commas The O lt opt gt sequence can be repeated for as many options as desired Example ASM96000 OS CRE myprog asm This will activate the symbol table and cross reference listing options lt gt Run the assembler with the specified processor revision level enhance ments This is for backward compatibility so that the assembler will flag new constructions as illegal proc can be any of the processor identifiers given LI LULLLALALBRBU OLLLULLLEELL EA ARBQQOUOULULULU DLAhALLLLTABA SAL EXIT 6 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 1 MOTOROLA DSP ASSEMBLER below Note that if this option is not used the assembler runs with all latest revision level enhancements on by default Processor Identifier DSP56001 Rev C 56001c DSP56002 56002 DSP56004 56004 DSP56166 56166 DSP96001 Rev B 96001b DSP96002 96002 Example ASM56000 P56001c myprog asm Assemble MYPROG ASM with the DSP56000 Revision C enhance ments Q On some hosts the assembler displays a banner on the console when in voked This option inhibits the banner display It has no effect on hosts where the signon banner is not displayed by default
123. R REFERENCE MANUAL 301 Appendix F DEVICE DEPENDENT INFORMATION INC24 Increment 24 MS bits of accumulator MAC Signed multiply accumulate MACR Signed multiply accumulate and round MACSU Signed unsigned multiply accumulate MACUU Unsigned multiply accumulate MPY Signed multiply MPYR Signed multiply and round MPYSU Signed unsigned multiply MPYUU Unsigned multiply NEG Negate accumulator NEGC Negate accumulator with carry NORM Normalize accumulator iteration RND Round accumulator SBC Subtract long with carry SUB Subtract SUBL Shift left then subtract SWAP Swap accumulator words Transfer conditionally TFR Transfer data ALU register TFR2 Transfer data ALU register Transfer data register TST Test accumulator TST2 Test data ALU register ZERO Zero extend accumulator F 4 1 2 Logical Instructions The DSP56100 instructions used for logical operations are AND Logical AND ANDI AND Immediate with control register EOR Logical exclusive OR LSL Logical shift accumulator left LSR Logical shift accumulator right NOT Logical complement on accumulator OR Logical inclusive OR ORI OR immediate with control register ROL Rotate accumulator left ROL Rotate accumulator right Instruction allows parallel data move e a _ _________________________ _______________________________________________ __________________
124. RCZEOOPCOEOIWIAITIO ica cise ient de n doe Pa ES 181 7 5 8 Assembly Listing 181 7 6 EFFECTS ON THE PROGRAMMER S ENVIRONMENT 181 Appendix A B 1 B 2 B 3 viii ASCII CHARACTER CODES Appendix B DIRECTIVE SUMMARY ASSEMBLY CONTROL tin x tnd te b doe bade hd Bae 185 SYMBOL DEFINITION 22 52 trenta ha or SED idee eue 186 DATA DEFINITION STORAGE ALLOCATION 186 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA TABLE OF CONTENTS Paragraph Page Number Title Number B 4 LISTING CONTROL AND OPTIONS 2 186 B 5 OBJEGT FIRE GORNTEO age mae xa ea Xt dtc 187 B 6 MACROS AND CONDITIONAL ASSEMBLY 187 B 7 STRUCTURED 187 Appendix C ASSEMBLER MESSAGES C 1 INTRODUCTION aco uid iata tuere ea afa de RU EQ S e 189 Appendix D ASSEMBLER LISTING FILE FORMAT D 1 INTRODUCTION be d bee Ra 235 D 2 LISTING FILE 235 D 3 GHOSS HEFERENGE FORMAT acr y eye rer ow dts CR enu 237 D 4 MEMORY UTILIZATION REPORT 237 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 1 INTRODUCTIONS ded xit den es 253 E 2 OBJECT FILE STRUCTURE Seco
125. RENCE MANUAL 299 Appendix F DEVICE DEPENDENT INFORMATION 3 3 Condition Code Mnemonics Following are the DSP96000 condition code mnemonics which correspond to the condi tional instructions based on the CCR condition codes These tests may be used in an op erand comparison expression within a structured control statement Chapter 7 lt CC gt carry clear lt CS gt carry set lt EQ gt equal lt FEQ gt float equal lt FERR gt float error lt FGE gt float greater or equal lt FGL gt float greater or less than lt FGLE gt float greater less or equal lt FGT gt float greater than lt FINF gt float infinity lt FLE gt float less or equal lt FLT gt float less than lt FMI gt float minus lt FNE gt float not equal lt FNGE gt float not greater or equal lt FNGL gt float not greater or less than lt FNGLE gt float not greater less or equal lt FNGT gt float not greater than lt FNLT gt float not less than lt FOR gt float ordered lt FPL gt float plus lt FUN gt float unordered lt GE gt greater or equal lt GT gt greater than lt HI gt higher HS higher or same LE less or equal lt LO gt lower lt LS gt lower or same lt LT gt less than lt gt minus NE not equal PL plus lt VC gt overflow clear lt VS gt overflow set 300 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA App
126. REPEAT WHILE Number of macro expansion arguments is greater than definition Number of macro expansion arguments is less than definition A discrepancy exists between the number of arguments specified in a macro defi nition and the number of arguments provided in the macro call Options for both debug and strip specified strip ignored Both the G and Z options were given on the command line The G option takes precedence P space not accessed using MOVE encoding MOVEP type instruction was given but a P memory reference was not used as an operand The assembler substitutes a valid encoding for the operands in ques tion Page directive with no arguments ignored with page length of zero A PAGE directive with no arguments which ordinarily produces a form feed in the listing output is ignored because a previous PAGE directive specified a page length of zero Viren LLLLLLZ oo ooG U U LA AU LLLA Z LLULLLLLK QAT 196 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES PC relative address involves incompatible memory spaces The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X Y P rogram E MI or N one only N is fully compatible with all other attributes In this case an operand was evaluated with a different memory space attribute than that specified
127. SCLR Jump to subroutine if bit clear JSET Jump if bit set JSR Jump to subroutine JSSET Jump to subroutine if bit set NOP No operation PFLUSH Flush program cache PFREE Free program cache Instruction allows parallel data move 298 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION PLOCK Program cache sector lock PLOCKR Program cache relative sector lock PUNLOCK Program cache sector unlock PUNLOCKR Program cache relative sector unlock REP Repeat next instruction RESET Reset on chip peripheral devices RTI Return from interrupt RTR Return from subroutine with restore RTS Return from subroutine STOP Stop processing low power standby WAIT Wait for interrupt low power standby F 3 2 Register Names and Usage The following DSP96000 register names in either upper or lower case cannot be used as symbol names in an assembly language source file DO DO L DO M DO H D1 D1 L D1 M D1 H D2 D2 L D2 M D2 H D3 D3 L D3 M D3 H D4 D4 L D4 M D4 H D5 D5 L D5 M D5 H D6 D6 L D6 M D6 H D7 D7 L D7 M D7 H D8 D8 L D8 M D8 H D9 D9 L D9 M D9 H RO NO MO MR R1 N1 M1 CCR R2 N2 M2 SR R3 N3 M3 LC RA 4 5 5 5 SSH R6 N6 M6 SSL R7 N7 M7 OMR The following DSP96000 registers are used by the assembler in structured control state ment processing Chapter 7 DO L DO M D4 L D6 L ae MOTOROLA DSP ASSEMBLER REFE
128. SEMBLER MESSAGES Illegal instruction in single instruction DO loop A conditional break instruction BRKcc cannot be used as the only instruction in a DO loop Illegal memory counter specified The memory counter designation supplied in the ORG directive was not one of H high L low or a positive integer expression in parentheses Illegal memory map character The memory map character supplied in the ORG directive was not one of 1 inter nal E external R ROM A port A or B port B Illegal memory space specified Illegal memory space specified L Illegal memory space specified P Illegal memory space specified X Illegal memory space specified Y The memory space given is either invalid or inappropriate for the desired operation Illegal move field destination specified Illegal move field destination register specified The destination operand in a data memory move is invalid for the type of instruction specified Illegal move field source specified The source operand in a data memory move is invalid for the type of instruction specified Illegal operator for floating point element Bitwise operators are invalid for floating point values Illegal option An argument to the OPT directive is invalid Illegal processor type The argument to the P command line option is invalid Illegal revision The argument to the R command line option is invalid 208 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA
129. SSEMBLER REFERENCE MANUAL MOTOROLA Runtime location counter 10 Runtime memory space 10 Section 39 159 block data 283 data hiding e za e ee 40 eld prada tues de bods dl eu duse Re d 119 fragmented 42 nananana 41 124 142 159 header 259 41 131 159 MAC O atii riora 42 dean 42 145 relocation 43 dieses hes 44 142 159 40 DOUICS file 2 s reo ae 8 13 12 ese cse aed as eU UU 115 format 14 308 310 311 ea en oue 14 concatenation 14 87 88 83 PME 145 POSION secon 35 substring 14 SYMBOL TTE 13 CASS iue du cA bu abide a ii 142 cross reference 142 equate 120 142 global dicen et rs 142 io RT PE n 145 o ass PP 125 162 M 8 146 W 146 192 2222 12 42 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 319
130. See also LSTCOL EXAMPLE TABS 4 Set listing file tab stops to 4 GO _ amp MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 165 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES TITLE Initialize Program Title TITLE lt string gt The TITLE directive initializes the program title to the string in the operand field The pro gram title will be printed on the top of all succeeding pages until another TITLE directive is encountered The title is initially blank The TITLE directive will not be printed in the source listing A TITLE directive with no string argument will cause the current title to be blank A label is not allowed with this directive See also STITLE EXAMPLE TITLE FIR FILTER EEE 166 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES UNDEF Undefine DEFINE Symbol UNDEF lt symbol gt The UNDEF directive causes the substitution string associated with lt symbol gt to be re leased and lt symbol gt will no longer represent a valid DEFINE substitution See the DE FINE directive for more information A label is not allowed with this directive See also DEFINE EXAMPLE UNDEF DEBUG UNDEFINES THE DEBUG SUBSTITUTION STRING DSP ASSEMBLER REFERENCE MANUAL 167 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES WARN Programmer Gener
131. TERS AND DIRECTIVES Location Counter Substitution When used as an operand in an expression the asterisk represents the current integer value of the runtime location counter EXAMPLE ORG X 100 XBASE EQU 20 120 _______ __ ____ ____ _______ __ ___ ___________ 954 86 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES String Concatenation Operator Any two strings can be concatenated with the string concatenation operator The two strings must each be enclosed by single or double quotes and there must be no interven ing blanks between the string concatenation operator and the two strings EXAMPLE ABC DEF ABCDEF DSP ASSEMBLER REFERENCE MANUAL 87 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Substring Delimiter string offset length Square brackets delimit a substring operation The string argument is the source string offset is the substring starting position within lt string gt length is the length of the desired substring string may be any legal string combination including another substring An error is issued if either offset or length exceed the length of lt string gt EXAMPLE DEFINE ID DSP56000 3 5 ID 56000 OGMEM de 88 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIG
132. TION SUB Subtract SUBL Shift left then subtract SUBR Shift right then subtract Transfer conditionally TFR Transfer data ALU register TST Test F 2 1 2 Logical Instructions The DSP56000 instructions used for logical operations are AND Logical AND ANDI AND Immediate with control register EOR Logical exclusive OR LSL Logical shift accumulator left LSR Logical shift accumulator right NOT Logical complement on accumulator OR Logical inclusive OR ORI OR immediate with control register ROL Rotate accumulator left ROL Rotate accumulator right F 2 1 3 Bit Manipulation Instructions The DSP56000 instructions used for bit manipulation are BCHG Bit test and change BCLR Bit test and clear BSET Bit test and set BTST Bit test on memory F 2 1 4 Loop Instructions The DSP56000 instructions used for loop operations are DO Start hardware loop ENDDO Exit from hardware loop Instruction allows parallel data move DSP ASSEMBLER REFERENCE MANUAL 291 Appendix F DEVICE DEPENDENT INFORMATION F 2 1 5 Move Instructions The DSP56000 instructions used for move operations are LUA Load updated address MOVE Move data MOVEC Move control register MOVEM Move program memory MOVEP Move peripheral data F 2 1 6 Program Control Instructions The DSP56000 instructions used for program control are DEBUG Enter debug mode DE
133. WIDTH See also LSTCOL EXAMPLE PAGE 132 3 3 Set width 10132 3 line top bottom margins PAGE Page eject 152 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES PMACRO Purge Macro Definition PMACRO lt symbol gt lt symbol gt lt symbol gt The specified macro definition will be purged from the macro table allowing the macro ta ble space to be reclaimed A label is not allowed with this directive See also MACRO EXAMPLE PMACRO MAC1 MAC2 This statement would cause the macros named and MAC2 to be purged MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 153 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES PRCTL Send Control String to Printer PRCTL exp l string exp l string PRCTL simply concatenates its arguments and ships them to the listing file the directive line itself is not printed unless there is an error exp is a byte expression and string is an assembler string A byte expression would be used to encode non printing control characters such as ESC The string may be of arbitrary length up to the maximum as sembler defined limits PRCTL may appear anywhere in the source file and the control string will be output at the corresponding place in the listing file However if a PRCTL directive is the last line in the last input file to be processed the assembler insures that all error summaries symbol ta bles and
134. _RAD16 DC 10 Evaluates to hex 10 RADIX 3 Bad radix expression cOGM M d l MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 155 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES RDIRECT Remove Directive or Mnemonic from Table RDIRECT lt direc gt lt direc gt lt direc gt The RDIRECT directive is used to remove directives from the assembler directive and mnemonic tables If the directive or mnemonic that has been removed is later encoun tered in the source file it will be assumed to be a macro Macro definitions that have the same name as assembler directives or mnemonics will cause a warning message to be output unless the RDIRECT directive has been used to remove the directive or mnemonic name from the assembler s tables Additionally if a macro is defined through directive which has the same name as an existing directive or opcode it will not automat ically replace that directive or opcode as previously described In this case the RDIRECT directive must be used to force the replacement Since the effect of this directive is global it cannot be used in an explicitly defined section see SECTION directive An error will result if the RDIRECT directive is encountered in a section A label is not allowed with this directive EXAMPLE RDIRECT This would cause the assembler to remove the PAGE directive from the directive table and
135. a source line will be folded underneath the source line and aligned with the opcode field Lines that start with the comment character will be aligned with the label field in the source listing The FC option is useful for displaying the source listing on 80 column devices FF Use form feeds for page ejects in the listing file FM Format assembler messages so that the message text is aligned and broken at word boundaries GL Make all section symbols global This has the same effect as declaring every section explicitly GLOBAL This option must be given before any sections are defined explicitly in the source file GS default reset in absolute mode Make all sections global static All section counters and attributes will be associated with the GLOBAL section This op tion must be given before any sections are defined explicitly in the source file HDR default reset Generate listing header along with titles and subtitles IC Ignore case in symbol section and macro names This directive must be is sued before any symbols sections or macros are defined OOO 142 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES IL Inhibit source listing This option will stop the assembler from producing a source listing INTR default reset in absolute mode Perform interrupt location checks Certain DSP instructions may not appear in the interrupt vector locations in program memory This op
136. acro expansion It will contain a lower case m during macro definition and a lower case d during data constant expansion the CEX option used with the DC directive When a nested macro is expand ed this column will contain both a lower case and a plus sign A lower case i in this column indicates that the line has been skipped as a result of an IF THEN ELSE directive sequence A lower case p means that the line was automatically generated by the as sembler ordinarily to introduce pipeline delay D 3 CROSS REFERENCE FORMAT The assembler will optionally generate a cross reference listing of all symbols used in the source program This can be done by using the CEX option of the OPT directive Chapter 6 The cross reference listing for the above sample program is shown in Figure D 2 It contains a sorted table of symbols each one followed by a list of line numbers in the source listing where a reference to the symbol occurred Line numbers followed by an as terisk indicate the line where the symbol was defined D 4 MEMORY UTILIZATION REPORT FORMAT The assembler can optionally record and report allocation and usage of the separate memory spaces of the target DSP This is done with the MU option of the OPT directive Chapter 6 A memory utilization report is a memory map showing data allocation code generation and unused memory areas along with associated label section and overlay information if available
137. ake EQU symbols assembly time constants CONTCK Continue checksumming DLD Do not restrict directives in loops GL Make all section symbols global GS Make all sections global static INTR Perform interrupt location checks LB Byte increment load counter LDB Listing file debug Scan directories for include files PS Pack strings PSM Programmable short addressing mode RP Generate NOP to accommodate pipeline delay RSV Check reserve data memory locations SI Interpret short immediate as long or sign extended SVO Preserve object file on errors Following are descriptions of the individual options The parenthetical inserts specify de fault if the option is the default condition and reset if the option is reset to its default state at the end of pass one A label is not allowed with this directive AE default reset Check address expressions for appropriate arithmetic opera tions For example this will check that only valid add or subtract operations are performed on address terms cc Enable cycle counts and clear total cycle count Cycle counts will be shown on the output listing for each instruction Cycle counts assume a full instruc tion fetch pipeline and no wait states CEX Print DC expansions CK Enable checksumming of instruction and data values and clear cumulative checksum The checksum value can be obtained using the CHK function see Chapter 3 CL default reset Print th
138. allowed in relative expression Relative expressions are generally used for address computation therefore a float ing point value would not be appropriate Floating point value not allowed An immediate value expressed in floating point notation is only valid in a MOVE type instruction Forcing not specified The type of forcing operand was not given in a FORCE directive Function result out of range The result computed by a transcendental function was too large to be represented on the host machine GL option must be used before any section The GL option must be activated before any explicit sections are encountered so that the assembler can insure that all section symbols are global GLOBAL without preceding SECTION directive A GLOBAL directive was encountered outside any previously defined section EEE 206 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES GS option must be used before any section The GS option must be activated before any explicit sections are encountered so that the assembler can use the appropriate counters for section relocation Hex constant expected A character other than ASCII 0 through 9 through or through either followed the hexadecimal constant delimiter or appeared in an expression where a hexadecimal value was expected by default IC option must be used before any symbol section or macro definition The IC option must be activated before
139. and their sizes are made visible to the project section by using the XREF directive The first ORG establishes where the overlay segments will be placed in mem ory contiguously at load time The second ORG sets up the absolute base address for the overlay area common to all of the overlay segments Uninitialized space is allocated for the overlay area immediately followed by code to move the overlay segments into the common area at runtime The following assembler command line will process the header file and all overlay segments ASM96000 A B L OVLPROJ OVER1 OVER2 OVER3 START The assembler is invoked in absolute mode A option and generates an executable and listing file All files on the command line are processed as a single assembly run and all are used to produce the output OVLPROJ ASM is read first and sets up the appropriate absolute addresses for later sections Then each overlay file is read and loaded one after the other at external X memory address 100 hexadecimal However since each overlay MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 55 Chapter 4 SOFTWARE PROJECT MANAGEMENT module was intended to run starting at OVLBASE in P memory all labels and jumps to those labels within the overlay code will be relative to the overlay base address This means that the code in each of the overlay modules when loaded by the overlay man agement code in the OVLPROJECT section will start executing at internal P memory ad dress 200 hexadeci
140. appear in the listing file would be HEXA NOP The percent sign is also the character used to indicate a binary constant If a binary con stant is required inside a macro it may be necessary to enclose the constant in parenthe ses or escape the constant by following the percent sign by a backslash 5 5 4 Dummy argument string operator Another dummy argument operator is the double quote This character is replaced with a single quote by the macro processor but following characters are still examined for dummy argument names The effect in the macro call is to transform any enclosed dummy arguments into literal strings For example consider the following macro definition STR MAC MACRO STRING DC STRING ENDM If this macro were called with the following macro expansion line STR MAC ABCD then the resulting macro expansion would be DC ABCD DSP ASSEMBLER REFERENCE MANUAL 67 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY Double quotes also make possible DEFINE directive expansion within quoted strings Be cause of this overloading of the double quotes care must be taken to insure against in appropriate expansions in macro definitions Since DEFINE expansion occurs before macro substitution any DEFINE symbols are replaced first within a macro dummy argu ment string DEFINE LONG short STR MACRO STRING MSG This is a LONG STRING MSG This is a LONG STRING ENDM
141. applications Two such data structures are the modulo buffer and the reverse carry buffer collectively referred to as circular buffers Due to the way they are accessed and manipulated these buffers generally are constrained to a par ticular size or starting address The assembler provides directives for aligning buffer base addresses allocating buffer space and initializing buffer contents 4 5 1 The ORG Directive The ORG directive specifies which memory space will be the runtime memory space and which counter the H L default or numbered runtime counter associated with that mem ory space and section will be the runtime location counter At the same time the ORG directive indicates which memory space will be the load memory space and which counter the H L default or numbered load counter associated with that memory space and sec tion will be used as the load location counter In addition the ORG directive can be used to specify a physical mapping to DSP memory and to assign initial values to the runtime and load location counters The names of the counters High Low and default are symbolic only and the assembler performs no checks to insure that the value assigned to the High counter is greater than the Low Moreover there is no inherent relationship among numbered counters except that counters 0 1 and 2 correspond to the default Low and High counters respectively Counters are useful for providing mnemonic links between
142. arry If the runtime location counter is not zero this directive first advances the runtime location counter to a base address that is a mul tiple of 2K where 2 gt expression An error will be issued if there is insufficient memory remaining to establish a valid base address Unlike other buffer allocation directives the runtime location counter is not advanced by the value of the integer expression in the op erand field the location counter remains at the buffer base address The result of expression may have any memory space attribute but must be an abso lute integer greater than zero and cannot contain any forward references symbols that have not yet been defined If a Modulo buffer is specified the expression must fall within the range 2 expression m where m is the maximum address of the target DSP If a Reverse carry buffer is designated and expression is not a power of two a warning will be issued A label is not allowed with this directive See also BADDR BSM BSB DSM DSR ENDBUF EXAMPLE ORG X 100 BUFFER 24 CIRCULAR BUFFER MOD 24 M BUF DC 0 5 0 5 0 5 0 5 DS 20 REMAINDER UNINITIALIZED ENDBUF I C MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 99 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES COBJ Comment Object File COBJ string The directive is used to place a comment in the object code file The lt string gt will be put in t
143. ated Warning WARN lt str gt lt exp gt lt str gt lt exp gt lt str gt lt exp gt The WARN directive will cause a warning message to be output by the assembler The total warning count will be incremented as with any other warning The WARN directive is normally used in conjunction with conditional assembly directives for exceptional con dition checking The assembly proceeds normally after the warning has been printed An arbitrary number of strings and expressions in any order but separated by commas with no intervening white space can be specified optionally to describe the nature of the gen erated warning A label is not allowed with this directive See also FAIL MSG EXAMPLE WARN parameter too large 168 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES XDEF External Section Symbol Definition XDEF lt symbol gt lt symbol gt lt symbol gt The XDEF directive is used to specify that the list of symbols is defined within the current section and that those definitions should be accessible by sections with a corresponding XREF directive This directive is only valid if used within a program section bounded by the SECTION and ENDSEC directives The XDEF directive must appear before lt sym bol gt is defined in the section If the symbols that appear in the operand field are not de fined in the section an error will be generated A label
144. atement N R MUL CNT 1 VEC1 VEC2 OUT where the operand field arguments separated by commas and taken left to right corre spond to the dummy arguments N through RESULT respectively These arguments are then substituted in their corresponding positions of the definition to produce a se quence of instructions Macro arguments consist of sequences of characters separated by commas Although these can be specified as quoted strings to simplify coding the assembler does not re quire single quotes around macro argument strings However if an argument has an em bedded comma or space that argument must be surrounded by single quotes An I L LLLLLLLLLL AAAAOOQEQCQ LDDODSD DAOOOOOOOnOo OOo 64 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY argument can be declared null when calling a macro However it must be declared ex plicitly null Null arguments can be specified in four ways by writing the delimiting com mas in succession with no intervening spaces by terminating the argument list with a comma and omitting the rest of the argument list by declaring the argument as a null string or by simply omitting some or all of the arguments A null argument will cause no character to be substituted in the generated statements that reference the argument more arguments are supplied in the macro call than appear in the macro definition a warning will be output b
145. ationship Y i Z X where 115 an integer 3 6 3 Shift operators shift left lt lt Integer only shift right gt gt Integer only 22222122121 CUIU DSP ASSEMBLER REFERENCE MANUAL 23 Chapter 3 EXPRESSIONS The shift left operator causes the left operand to be shifted to the left and zero filled by the number of bits specified by the right operand The shift right operator causes the left operand to be shifted to the right by the number of bits specified by the right operand The sign bit will be extended Shift operators cannot be applied to floating point operands 3 6 4 Relational operators less than lt less than or equal lt greater than gt greater than or equal gt equal not equal Relational operators all work the same way If the indicated condition is true the result of the expression is an integer 1 If itis false the result of the expression is an integer O In either case the memory space attribute of the result is None For example if D has a value of 3 and E has a value of 5 then the result of the expression D E is 1 and the result of the expression gt is 0 Each operand of the conditional op erators can be either floating point or integer Test for equality involving floating point val ues should be used with caution since rounding error could cause unexpected results Relational operators are primarily intended for use with the conditional assemb
146. ave carriage return characters ASCII CR ODH and possibly end of file markers ASCII SUB 1AH stripped before being processed by the assembler G 3 4 Invoking the Assembler The assembler is invoked from the shell usually csh in SunOS by entering the name of the assembler executable followed by any desired options and finally the names of the source files to be assembled See Chapter 1 RUNNING THE ASSEMBLER for a list of options which can be included on the command line As an example if the assembler executable was located in a directory listed in the user PATH environment variable the following command would assemble the file myfile asm in the current working directory putting the object file myfile in the objects subdirectory and the listing file outfile into the listings subdirectory asm96000 bobjects myfile cln listings outfile lst Since SunOS supports standard input and output channels in the example above any warning or error messages would appear both in the listing file and on the standard output by default the terminal screen SunOS also supports I O redirection so that the assembler listing can be sent to a file or arbitrary output device Assume a user wanted list of errors from the assembly but a full source code listing was not required This can be accomplished with the following assem bler command line asm96000 I dev null test gt test err In this example no object file is created and all e
147. bel is not allowed with this directive See also SECTION EXAMPLE SECTION COEFF ORG Y VALUES BSC 100 Initialize to zero ENDSEC nt MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 119 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES EQU Equate Symbol to a Value label EQU X Y L P E lt expression gt The EQU directive assigns the value and memory space attribute of expression to the symbol label If expression has a memory space attribute of None then it can op tionally be preceded by any of the indicated memory space qualifiers to force a memory space attribute An error will occur if the expression has a memory space attribute other than None it is different than the forcing memory space attribute The optional forcing memory space attribute is useful to assign a memory space attribute to an expression that consists only of constants but is intended to refer to a fixed address in a memory space The EQU directive is one of the directives that assigns a value other than the program counter to the label The label cannot be redefined anywhere else in the program or sec tion if SECTION directives are being used The expression may be relative or abso lute but cannot include a symbol that is not yet defined no forward references are allowed See also SET EXAMPLE A D PORT EQU X 4000 This would assign the value 4000 w
148. bol A SLOCAL Section local label A ULOCAL Underscore local label A MLOCAL Macro local label Figure E 15 Storage Classes continued The value of a symbol depends on its storage class This relationship is summarized in Figure E 16 H M X dun 270 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Storage Class Value C AUTO Stack offset in words C EXT Relocatable address C STAT Relocatable address C REG Register number C LABEL Relocatable address C MOS Offset in words C ARG Stack offset in words STRTAG 0 MOU 0 C UNTAG 0 0 0 C TPDEF C ENTAG C MOE Enumeration value REGPARAM Register number C FIELD Bit displacement C BLOCK Relocatable address C FON Relocatable address C EOS Size of structure in words see below Tag index Relocatable address Figure E 16 Storage Class and Value I Q X uf MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 271 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Storage Class Value A FILE see below A SECT String table offset to section name A BLOCK Relocatable address A MACRO String table offset to macro name A GLOBAL Relocatable address A XDEF Relocatable address A XREF St
149. bsequent transfer of con trol based on that comparison Such a comparison takes the form opi cc lt op2 gt where cc is a condition mnemonic enclosed in angle brackets as described in section 7 4 1 1 and op1 and op2 are register or memory references symbols or assembler expressions When processed by the assembler the operands are arranged such that a compare jump sequence of the following form always results CMP lt 1 gt lt 2 gt lt label gt where the jump conditional is the inverse of lt cc gt Ordinarily lt op1 gt is moved to the lt reg1 gt data register and lt op2 gt is moved to the lt reg2 gt data register prior to the compare This is not always the case however if lt op1 gt happens to be lt reg2 gt and lt op2 gt is lt 1 gt an intermediate register is used as a scratch register In any event worst case code generation for a given operand comparison expression is generally two moves a compare and a conditional jump Jumps or branches generated by structured control statements are forced long because the number and address of intervening instructions between a control statement and its termination are not known by the assembler The programmer may circumvent this be havior by use of the SCSJMP directive see Chapter 6 Any immediate operands must be preceded by a pound sign Memory references must be preceded by a memory space qualifier X Y or P
150. bytes in the symbol table entry are a union of a character array and two longs If the symbol name is seven characters or less the null padded symbol name is stored there If the symbol name is longer than seven characters then the entire symbol name is stored in the string table In this case the eight bytes contain two long integers the first is zero and the second is the offset relative to the beginning of the string table of the name in the string table Since there can be no symbols with a null name the ze roes on the first four bytes serve to distinguish a symbol table entry with an offset from one with a name in the first eight bytes E 3 4 2 Symbol Value The symbol value is a union of a CORE ADDR typedef and an array of two longs If the symbol value is an address the contents will be stored as a CORE ADDR structure with memory and mapping attributes Otherwise the contents are stored in the n val field Whether the symbol value is an address or not depends on the storage class of the sym bol See section E 3 4 5 for more information on the relationship of symbol value and stor age class DI LLALAAOUOEEAALLLLLLAGLAACAAAALLALLOAALLNLULLLULLLLLLLL X AIZIT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 265 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 3 4 3 Section Number The section number maps a symbol to its corresponding section in the object file e g the section in which the symbol is defined A special sect
151. cates that the line contains a symbol called a label underscore as the first character indicates that the label is a local label Labels may be indented if the label symbol is immediately followed by a colon If the first non blank field on a line complies with either forms 2 or 3 above and the field ends with a colon the assembler regards this as the label field even if it does not start with the first character on the line However all characters preceding the label on the source line must be whitespace characters spaces or tab characters There should be no interven ing blanks or tabs between the end of the label symbol and the appended colon character Local labels are any normal symbol name preceded with no intervening blanks by an underscore Except for the special case of macros described below local labels have a limited scope bounded by any two non local labels The local label can be referred to or defined only in source statements that are between two source lines containing non local labels Local labels are useful in defining program locations where a unique label name is required but is not considered useful in documenting the source file for example DSP ASSEMBLER REFERENCE MANUAL 15 Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS the terminating address of a DO loop Note that the maximum length of a local label in cludes the leading underscore cha
152. ce to use as the runtime location counter The L counter will not be ini tialized and its last value will be used The load memory space is set to E and the qualifier 8 indicates a bytewise RAM configuration Instructions and data will be generated eight bits per output word with byte oriented load addresses The de fault load counter will be used and there is no explicit load origin LLIACLCLLQLLLLLULLAAALAL loohhhhohohouLuLh1Z SZLA S XXIT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 149 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ORG P 5 Y 8000 Indicates code will be generated for an absolute overlay The runtime memory space is P and the counter used as the runtime location counter is counter 5 will not be initialized and the last previous value of counter 5 will be used The load memory space is Y Since neither H L nor any counter expression was specified as the load counter the default load counter counter 0 will be used as the load location counter The default load counter will be initialized to 8000 _ 150 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES PAGE Top of Page Size Page PAGE lt exp1 gt lt exp2 gt lt exp5 gt The PAGE directive has two forms 1 If no arguments are supplied then the assembler will advance the listing to the top of the next page In this case th
153. code field of a source statement Any arguments are placed in the operand field By suitably selecting the ar guments in relation to their use as indicated by the macro definition the programmer causes the assembler to produce in line coding variations of the macro definition LIREILEZLULLLLLLLLLLLN LNLLLLLLLLLLL LL ZOLL UAL TOOPLLB GIOLLI MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 61 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY The effect of a macro call is to produce in line code to perform a predefined function The code is inserted in the normal flow of the program so that the generated instructions are executed with the rest of the program each time the macro is called An important feature in defining a macro is the use of macro calls within the macro defini tion The assembler processes such nested macro calls at expansion time only The nesting of one macro definition within another definition is permitted However the nested macro definition will not be processed until the primary macro is expanded The macro must be defined before its appearance in a source statement operation field 5 2 MACRO LIBRARIES The Motorola DSP assembler allows for the maintenance of macro libraries with the MA CLIB directive This directive is used to specify the pathname as defined by the host op erating system of a directory that contains macro definitions Each macro definition must be in a separate file and the file must be named the same
154. comprise transcendental random value and min max func tions among others ABS Absolute value ACS Arc cosine ASN Arc sine AT2 Arc tangent ATN Arc tangent CEL Ceiling function COH Hyperbolic cosine COS Cosine FLR Floor function L10 Log base 10 LOG Natural logarithm MAX Maximum value MIN Minimum value POW Raise to a power RND Random value SGN Return sign SIN Sine SNH Hyperbolic sine SQT Square root TAN Tangent TNH Hyperbolic tangent XPN Exponential function LESSE 26 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS 3 8 2 Conversion Functions The conversion functions provide conversion between integer floating point and fixed point fractional values CVF Convert integer to floating point CVI Convert floating point to integer CVS Convert memory space FLD Shift and mask operation FRC Convert floating point to fractional LFR Convert floating point to long fractional LNG Concatenate to double word LUN Convert long fractional to floating point RVB Reverse bits in field UNF Convert fractional to floating point 3 8 3 String Functions String functions compare strings return the length of a string and return the position of a substring within a string LEN Length of string POS Position of substring in string SCP Compare strings 3 8 4 Macro Functio
155. control structures such as loops FOR REPEAT WHILE or conditional branches IF THEN IF THEN ELSE The as sembler however accepts formal high level directives that specify these control struc tures generating the appropriate assembly language instructions for their efficient implementation This use of structured control statement directives improves the read ability of assembly language programs without compromising the desirable aspects of programming in an assembly language 7 2 STRUCTURED CONTROL DIRECTIVES The following directives are used for structured control Note the leading period which distinguishes these keywords from other directives and mnemonics Structured control directives may be specified in either upper or lower case but they must appear in the op code field of the instruction line e g they must be preceded either by a label a space or a tab BREAK ENDI LOOP CONTINUE ENDL REPEAT ELSE ENDW UNTIL ENDF FOR WHILE In addition the following keywords are used in structured control statements AND DOWNTO TO BY OR DO THEN Note that AND DO and OR are reserved assembler instruction mnemonics DSP ASSEMBLER REFERENCE MANUAL 171 Chapter 7 STRUCTURED CONTROL STATEMENTS 7 3 The formats for the BREAK CONTINUE FOR LOOP REPEAT and WHILE statements are given in sections 7 3 4 through 7 3
156. cro scope This means that any underscore labels in the expression term following the circumflex will not be searched for in the macro local label list The operator has no effect on normal labels or outside of a macro expansion The circumflex operator is useful for passing local labels as macro arguments to be used as referents in the macro Note that the circumflex is also used as the binary exclusive OR operator EXAMPLE Consider the following macro definition LOAD MACRO ADDR MOVE P ADDR RO ENDM If this macro were called as follows LOCAL LOAD LOCAL the assembler would ordinarily issue an error since LOCAL is not defined within the body of the macro With the override operator the assembler recognizes the LOCAL symbol outside the macro expansion and uses that value in the MOVE instruction M M M 94 82 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Macro String Delimiter or Quoted String DEFINE Expansion Character Macro String The double quote when used in macro definitions is transformed by the macro pro cessor into the string delimiter the single quote The macro processor examines the characters between the double quotes for any macro arguments This mechanism allows the use of macro arguments as literal strings EXAMPLE Using the following macro definition CSTR MACRO STRING DC
157. cross references have been printed before sending out the control string This is so a PRCTL directive can be used to restore a printer to a previous mode after printing is done Similarly if the PRCTL directive appears as the first line in the first input file the control string will be output before page headings or titles The PRCTL directive only works if the L command line option is given otherwise it is ig nored See Chapter 1 for more information on the L option A label is not allowed with this directive EXAMPLE PRCTL 1B E Reset HP LaserJet printer _ _________ __ ____ __ ________ __ _______________ 154 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES RADIX Change Input Radix for Constants RADIX expression Changes the input base of constants to the result of expression The absolute integer expression must evaluate to one of the legal constant bases 2 10 or 16 The default radix is 10 The RADIX directive allows the programmer to specify constants in a pre ferred radix without a leading radix indicator The radix prefix for base 10 numbers is the grave accent Note that if a constant is used to alter the radix it must be in the appro priate input base at the time the RADIX directive is encountered A label is not allowed with this directive EXAMPLE RAD10 DC 10 Evaluates to hex A RADIX 2 RAD2 DC 10 Evaluates to hex 2 RADIX 716
158. ction name gt associated with them This serves to protect them from like named symbols elsewhere in the program By default a symbol defined inside any given section is private to that section unless the GLOBAL or LOCAL qualifiers accompany the SECTION directive More information on the GLOBAL and LOCAL qualifiers can be found in SECTIONS AND DATA HIDING be low Any code or data inside a section is considered an indivisible block with respect to relo cation Code or data associated with a section is independently relocatable within the memory space to which it is bound unless the STATIC qualifier follows the SECTION di rective on the instruction line More information on the STATIC qualifier is available in SECTIONS AND RELOCATION below lt _ DSP ASSEMBLER REFERENCE MANUAL 39 Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 3 SECTIONS AND DATA HIDING Symbols within a section are generally distinct from other symbols used elsewhere in the source program even if the symbol name is the same This is true as long as the section name associated with each symbol is unique the symbol is not declared public XDEF or GLOBAL and the GLOBAL or LOCAL qualifiers are not used in the section declaration see below Symbols that are defined outside of a section are considered global symbols and have no explicit section name associated with them G
159. ctions can access each others symbols freely without the use of the XREF and XDEF directives If the XDEF and XREF directives are used within one section they apply to all sections with the same section name The reuse of the section name is allowed to permit the program source to be arranged in an arbitrary manner for example all statements that reserve X space storage locations grouped together but re tain the privacy of the symbols for each section When the assembler operates in relative mode the default sections act as the basic grouping for relocation of code and data blocks For every section defined in the source a set of location counters is allocated for each DSP memory space These counters are used to maintain offsets of data and instructions relative to the beginning of the section At link time sections can be relocated to an absolute address loaded in a particular order or linked contiguously as specified by the programmer Sections which are split into parts or among files are logically recombined so that each section can be relocated as a unit Sections may be relocatable or absolute In the assembler absolute mode command line option all sections are considered absolute A full set of locations counters is reserved for each absolute section unless the GS option is given see the OPT directive this chap ter In relative mode all sections are initially relocatable However a section or a part tALLL4GCC X rLA
160. ctive in the opcode field any optional la bel is output in the label field The rest of the statement is left as is in the operand field except for any trailing comment the X and Y data movement fields are ignored Com ments following the statement are output in the comment field unless the unreported comment delimiter is used see Chapter 6 Statements are expanded using the macro facilities of the assembler Thus the generated code can be sent to the listing by specifying the MEX assembler option either via the OPT directive Chapter 6 or the O command line option Chapter 1 7 6 EFFECTS ON THE PROGRAMMER S ENVIRONMENT During assembly global labels beginning with Z L are generated They are stored in the symbol table and should not be duplicated in user defined labels Because these non lo cal labels ordinarily are not visible to the programmer there can be problems when local _ _ _ _ _ DSP ASSEMBLER REFERENCE MANUAL 181 Chapter 7 STRUCTURED CONTROL STATEMENTS underscore labels are interspersed among structured control statements The SCL op tion see the OPT directive Chapter 6 causes the assembler to maintain the current local label scope when a structured control statement label is encountered In the FOR loop opt is a user defined symbol When exiting the loop the memory regi
161. cution of lt stmtlist gt While lt expres sion gt remains true lt stmtlist gt is executed repeatedly When lt expression gt evaluates false advance to the instruction following the ENDW statement NOTES If lt expression gt is false upon entry to the WHILE loop lt stmtlist gt is not ex ecuted execution continues after the ENDW directive MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 177 Chapter 7 STRUCTURED CONTROL STATEMENTS The DO keyword is optional EXAMPLE WHILE 1 GT 0 loop until zero is found ENDW 7 4 SIMPLE AND COMPOUND EXPRESSIONS Expressions are an integral part of IF REPEAT and WHILE statements Structured control statement expressions should not be confused with the assembler expressions discussed in Chapter 3 The latter are evaluated at assembly time and will be referred to here as assembler expressions they can serve as operands in structured control state ment expressions The structured control statement expressions described below are evaluated at run time and will be referred to in the following discussion simply as expres sions A structured control statement expression may be simple or compound A compound ex pression consists of two or more simple expressions joined by either AND or OR but not both in a single compound expression 7 41 Simple Expressions Simple expressions are concerned with the bits of the Condition Code Register CCR These expressions are
162. d base address has been established See also DS DSM EXAMPLE ORG X 100 R BUF DSR 8 REVERSE CARRY BUFFER FOR 16 POINT FFT M MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 107 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DUP Duplicate Sequence of Source Lines lt label gt DUP lt expression gt ENDM The sequence of source lines between the DUP and ENDM directives will be duplicated by the number specified by the integer lt expression gt lt expression gt can have any mem ory space attribute If the expression evaluates to a number less than or equal to 0 the sequence of lines will not be included in the assembler output The expression result must be an absolute integer and cannot contain any forward references symbols that have not already been defined The DUP directive may be nested to any level lt label gt if present will be assigned the value of the runtime location counter at the start of the DUP directive processing See also DUPA DUPC DUPF ENDM MACRO EXAMPLE The sequence of source input statements COUNT SET 3 DUP COUNT ASR BY COUNT ASR DO ENDM would generate the following in the source listing COUNT SET 3 DUP COUNT ASR BY COUNT ASR DO ASR DO ASR DO ENDM 8 2 2 n 108 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Note that
163. d extra characters after the end of a valid expres sion Unbalanced parentheses can cause this error Extra characters following string An end of string delimiter was followed by unexpected characters on the source line Extra characters following symbol name A non alphanumeric character other than the underscore was encountered in a symbol name Extra characters in function argument or missing for function Mismatched parentheses or wrong number of parameters in a function invocation ec cc uccchuL ulLNNLLLLULLALISM T DSP ASSEMBLER REFERENCE MANUAL 205 Appendix C ASSEMBLER MESSAGES Extra characters in operand field The PAGE directive contains too many operands Extra fields ignored There were extra fields specified in an assembler directive First data move destination accumulator same as operand destination accumulator The destination of the data move field is the same as the Data ALU destination First data move field required with this instruction A TFR3 instruction requires a register and a data move operand field First data move source accumulator same as operand destination accumulator The source of the data move field is the same as the Data ALU destination Floating point constant expected A character other than ASCII 0 through 9 or or appeared in an expres sion where a floating point value was expected by default Floating point not
164. ds 282 E 4 4 Relocation 282 E 4 5 Block Data 5 lt 283 E 4 6 Other EXIOHSIODS 283 E 5 OBJECT FILE DATA EXPRESSION 283 5 1 Data Expression Generation 284 ES Data Expression 284 E 5 2 1 User EXpIOSSIDI ordei es Reel ip E YI 285 E 5 2 2 Relocatable Expression 285 5 2 3 Memory Space Operator 285 5 2 4 Bit Size 285 5 2 5 Memory Attribute 286 E 5 2 6 Line Number 286 E 5 2 7 BFxxx Instruction Mask Function 286 E 5 2 8 Local Relocatable Reference Function LRF 286 E 5 2 9 Alternate Encoding Function 287 Appendix F DEVICE DEPENDENT INFORMATION F 1 INTRODUCTION enra oh doe E 289 F 1 1 Instruction Set Summary 290 F 1 2 Register Names and 293 F 1 3 Condition Code 293 F 1 4 In
165. e macro as address references e g MOVE LABEL RO The assembler effectively dis allows this however since underscore label references within a macro invocation are re garded as labels local to that expansion of the macro A macro local label override is provided which causes local symbol lookup to have normal scope rather than macro call scope If a circumflex precedes an expression containing an underscore label at ex pansion the associated term will be evaluated using the normal local label list rather than the macro local label list The operator has no effect on normal labels or outside a macro expansion 5 4 MACRO CALLS When a macro is invoked the statement causing the action is termed a macro call The syntax of a macro call consists of the following fields lt label gt lt macro name gt lt arguments gt lt comment gt The argument field can have the form arg arg arg The macro call statement is made up of three fields besides the comment field the la bel if any will correspond to the value of the location counter at the start of the macro expansion the operation field which contains the macro name and the operand field which contains substitutable arguments Within the operand field each calling argument of a macro call corresponds one to one with a dummy argument of the macro definition For example the MUL macro defined earlier could be invoked for expansion called by the st
166. e PAGE directive will not be output 2 The PAGE directive with arguments can be used to specify the printed format of the output listing Arguments may be any positive absolute integer expression The arguments in the operand field as explained below are separated by com mas Any argument can be left as the default or last set value by omitting the ar gument and using two adjacent commas The PAGE directive with arguments will not cause a page eject and will be printed in the source listing A label is not allowed with this directive The arguments in order are PAGE WIDTH expl Page width in terms of number of output columns per line default 80 min 1 max 255 PAGE LENGTH lt gt Page length in terms of total number of lines per page default 66 min 10 255 As a special case a page length of 0 zero turns off all headers titles sub titles and page breaks BLANK TOP lt gt Blank lines at top of page default 0 min 0 max see below BLANK BOTTOM lt 4 gt Blank lines at bottom of page default 0 min 0 max see below BLANK LEFT lt 5 gt Blank left margin Number of blank columns left of the page default 0 min 0 max see below 2 2 2 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 151 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES The following relationships must be maintained BLANK TOP BLANK BOTTOM lt PAGE LENGTH 10 BLANK LEFT PAGE
167. e conditional assembly directives MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 141 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES CM default reset Preserve comment lines of macros when they are defined Note that any comment line within a macro definition that starts with two con secutive semicolons is never preserved in the macro definition CONST EQU symbols are maintained as assembly time constants and will not be sent to the object file This option if used must be specified before the first symbol in the source program is defined CONTC cycle counts Does not clear total cycle counts The cycle count for each instruction will be shown on the output listing CONTCK Re enable checksumming of instructions and data Does not clear cumula tive checksum value CRE Print a cross reference table at the end of the source listing This option if used must be specified before the first symbol in the source program is de fined DEX Expand DEFINE symbols within quoted strings Can also be done on a case by case basis using double quoted strings DLD Do not restrict directives in DO loops The presence of some directives in DO loops does not make sense including some OPT directive variations This op tion suppresses errors on particular directives in loops DXL default reset Expand DEFINE directive strings in listing FC Fold trailing comments Any trailing comments that are included in
168. e in structions Post increment by offset addressing mode not allowed The post increment by offset addressing mode is not allowed for this instruction The restriction applies for example to bit manipulation instructions and some jump type instructions Pre decrement addressing mode not allowed The pre decrement addressing mode is not allowed for this instruction The restric tion applies for example to instructions which include parallel XY memory data transfers RDIRECT directive not allowed in section Since the effect of the RDIRECT directive is global it cannot be used within a sec tion which has been declared using the SECTION directive Move the RDIRECT directive outside the declared section to avoid this error Redefinition would overflow line A substitution string declared using the DEFINE directive will cause the current source line to overflow if substitution occurs Reference outside of current buffer block Reference outside of current overlay block Reference was made to an underscore local label which fell outside the current buffer or overlay definition Register direct addressing not allowed Register direct addressing mode is not allowed for this instruction The restriction applies for example to bit manipulation instructions some jump type instructions and parallel XY data memory moves Register displacement valid only with address register R2 Only address register R2 is valid as a displacement re
169. e load location counter value to a label as a reference point for the over lay manager part of the program The High Low default or numbered counter assign ment can be determined by using the CTR function Section 3 8 4 5 3 Address Assignment Examples Some examples of the ORG directive are as follows ORG P 1000 Sets the runtime memory space to P Selects the default runtime counter counter 0 associated with P space to use as the runtime location counter and initializes it to 1000 The load memory space is implied to be P and the load location counter is assumed to be the same as the runtime location counter ORG PHE Sets the runtime memory space to P Selects the H load counter counter 2 as sociated with P space to use as the runtime location counter The H counter will not be initialized and its last value will be used Code generated hereafter will be mapped to external E memory The load memory space is implied to be P and the load location counter is assumed to be the same as the runtime location counter ORG PI OVL1 Y Indicates code will be generated for an overlay The runtime memory space is P and the default counter is used as the runtime location counter It will be reset to the value of OVL1 If the assembler is in absolute mode via the A command line option then OVL1 must be an absolute expression If OVL1 is an absolute expres sion the assembler uses the absolute runtime location counter If OVL1 is a rel
170. e of the machine If during assembly the specified location counter falls below the value given by lt expression gt a warning is issued A label is not allowed with this directive See also HIMEM EXAMPLE LOMEM XR 100 YR 100 SET X Y RUN LOW MEM BOUNDS 5 222 ROC __ _____________ 132 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES LSTCOL Set Listing Field Widths LSTCOL lt labw gt lt opcw gt lt oprw gt lt opc2w gt lt opr2w gt lt xw gt lt yw gt Sets the width of the output fields in the source listing Widths are specified in terms of column positions The starting position of any field is relative to its predecessor except for the label field which always starts at the same position relative to page left margin program counter value and cycle count display The widths may be expressed as any positive absolute integer expression However if the width is not adequate to accommo date the contents of a field the text is separated from the next field by at least one space Any field for which the default is desired may be null A null field can be indicated by two adjacent commas with no intervening space or by omitting any trailing fields altogether the LSTCOL directive is given with no arguments all field widths are reset to their default values A label is not allowed with this directive See also PAGE EXAMPLE LSTCOL 40 20 20 Reset
171. e or multiple character string constant a symbol or an expression The DC directive may have one or more arguments separated by com mas Multiple arguments are stored in successive address locations If multiple argu ments are present one or more of them can be null two adjacent commas in which case the corresponding address location will be filled with zeros If the DC directive is used in L memory the arguments will be evaluated and stored as long word quantities Other wise an error will occur if the evaluated argument value is too large to represent in a sin gle DSP word label if present will be assigned the value of the runtime location counter at the start of the directive processing Integer arguments are stored as is floating point numbers are converted to binary values Single and multiple character strings are handled in the following manner 1 Single character strings are stored in a word whose lower seven bits repre sent the ASCII value of the character EXAMPLE R 000052 2 Multiple character strings represent words whose bytes are composed of concatenated sequences of the ASCII representation of the characters in the string unless the NOPS option is specified see the OPT directive If the number of characters is not an even multiple of the number of bytes per DSP word then the last word will have the remaining characters left aligned and the rest of the word will be zero filled If the NOPS option is g
172. e pattern of standard source state ments The terminator is the ENDM directive The header of a macro definition has the form label MACRO dummy argument 155 lt EEE 62 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY The required label is the symbol by which the macro will be called The dummy argument list has the form lt dumarg gt lt dumarg gt lt dumarg gt The dummy arguments are symbolic names that the macro processor will replace with ar guments when the macro is expanded called Each dummy argument must obey the same rules as global symbol names Dummy argument names that are preceded by an underscore are not allowed Dummy arguments are separated by commas For example consider the following macro definition MUL MACRO NMUL AVEC BVEC RESULT header This macro implements real multiplies RESULT I AVEC I BVEC I I21 NMUL here NMUL number of multiplications AVEC base address of array AVEC I base address of array BVEC I RESULT base address of array RESULT I MOVE AVEC RO body MOVE BVEC R4 MOVE RESULT R1 MOVE X RO D4 S Y R4 D7 S DO NMUL ENDLOOP FMPY S D4 D7 DO X RO D4 S Y R4 D7 S MOVE DO S X R1 _ENDLOOP ENDM terminator When a macro call is executed the dummy arguments within the macro definition NMUL AVEC BVEC RESULT in the example above are replaced with the corres
173. e select error The comparison indicator passed to the evaluator selection logic was not valid This is a serious internal error that should be reported to Motorola Debug symbol type failure The symbol type indicator passed to the debug selection logic was not valid This is a serious internal error that should be reported to Motorola Directive select error The directive indicator passed to the directive selection logic was not valid This is a serious internal error that should be reported to Motorola DO stack out of sequence The assembler maintains an internal stack representing DO loop nesting levels The internal stack pointers have been corrupted Error in mnemonic table The indicator passed to the instruction processing logic was not valid This is a se rious internal error that should be reported to Motorola Expression operator failure Expression operator lookup has failed This is a serious internal error that should be reported to Motorola Expression stack underflow An attempt has been made to free an expression when there are none to be freed This is an internal error that should be reported to Motorola Fatal segmentation or protection fault Contact Motorola DSP Operation A program error has caused the assembler to access an invalid host system ad dress This generally indicates a bug in the assembler software _ LAAALLLLLLLLLLLLHLLLLLL ILILLLALKCLLLLLAOXIT MOTOROLA DSP
174. e unary negate or unary minus operator always has the memory attribute of OS MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 19 Chapter 3 EXPRESSIONS that operand Expressions that involve two or more operands and operators other than those mentioned above derive the memory space attribute of the result by examining the operands on the left and right side of an operator as shown in the following chart Left Operand Memory Space Attribute X Y L P E N Right Operand X X x T X Memory Space Attribute Y L P E N Represents an illegal operation that will result in an error Notice that L memory space is regarded as a union of both X and Y space In expressions that have one element that has a memory space attribute of L and another element with a memory space attribute of either X or Y the result will have the more restrictive memory space attribute X or Y The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols that are assigned memory space attributes of X Y L P or E are assumed to be addresses and therefore can only have values between zero and the maximum address value of the DSP inclusive Only symbols that have a memory space attribute of N can have values greater than the max imum address of the target processor Memory space attributes become important when an expression is used as an address
175. ecognized only in other sections which XREF them They can be made fully global recognizable by sections which do not XREF them by use of the XR option see the OPT directive Chapter 6 Alternatively the GLOBAL directive see Chapter 6 may be used within a section to make the named symbols visible outside of the section Both the XDEF and XREF directives must be used before the symbols to which they refer are defined or used in the section Here is another example SYM1 EQU 1 SECTION SECT1 XDEF SYM2 SYM1 EQU 2 SYM2 EQU 3 ENDSEC SECTION 5 2 XREF SYM2 MOVE SYM1 RO MOVE SYM2 R1 ENDSEC MOVE SYM2 R2 SYM1 is first defined outside of any section Then in section SECT1 SYM2 is declared public with an XDEF directive SYM 1 is also defined locally to section SECT1 In section SECT2 SYM is declared external via the XREF directive followed by a move of SYM1 to RO Since SYM1 was defined locally to section SECT1 the assembler uses the global value and moves a 1 to RO Because SYM was declared external in section SECT1 the value moved to R1 is 3 If SYM2 had not been XREFed in section SECT2 the value moved to R1 would have been unknown at this point In the last instruction it is not known what value will be moved to R2 since SYM2 was not defined outside of any section or was not declared GLOBAL within a section If the GLOBAL qualifier follows the section name in the SECTION directive then all symbols defined in the section until t
176. ed A macro name cannot be used as the label for a second macro definition in the same source file unless the macro is defined and used within a declared section see the SECTION directive Chapter 6 Macro not defined The macro name was not found in the macro lookup table Macro value substitution failed The evaluation of a macro argument expression failed Memory bounds greater than maximum address The bounds argument in a LOMEM or HIMEM directive is invalid Memory counter designator value too large The integer counter designator in an ORG directive is greater than 65535 Memory space must be P or NONE An END directive was encountered while the runtime memory space was X Y orL Missing for function All assembler built in functions require at least one argument which must be en closed in parentheses Missing in expression Parentheses are not balanced in an expression Missing argument The argument to a DUPA or DUPC directive was not found Missing definition string The substitution string for a DEFINE directive is missing Missing delimiter in substring A substring construct was missing the closing square bracket Missing dimension The DIM directive had no arguments __ lt DSP ASSEMBLER REFERENCE MANUAL 215 Appendix ASSEMBLER MESSAGES Missing directive name The argument to
177. ed A short or I O short address was expected as the second operand of a JCLR JSET JSCLR or JSSET instruction Short PC relative address too large The flagged operand value is greater than the maximum PC relative address of the target DSP SSH cannot be both source and destination register In a MOVE instruction the SSH register cannot be both the source and destination operand Start argument greater than machine word size The start parameter of FLD function has a value larger than can fit in the tar get machine word Start position greater than source string size The start parameter in a POS function is larger than the total length of the source string argument Storage block size must be greater than zero The size of a buffer allocated with the DSM DSR BSM BSB and other buffer di rectives was too small ETE MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 223 Appendix ASSEMBLER MESSAGES Storage block size out of range The size of the buffer in a DSM DSR BSM BSB or other buffer directive is too large to be allocated Storage block too large The runtime location counter overflowed while the assembler was attempting to al locate storage through a DSM or DSR directive The assembler automatically ad vances the program counter to the next valid base address given the size of the modulo or reverse carry buffer This error occurs when the sum of the expression in the DSM or DSR directive and the run
178. ed as the load counter the default load counter counter 0 will be used as the load location counter The default load counter will be initialized to 8000 If the last example shown was used in the following code sequence assume the runtime counter associated with P space had a previous value of 0010 ORG 5 8000 RLMUL MOVE 0 04 5 Y R4 D7 S FMPY S 04 07 00 MOVE D0 S X R1 then the label RLMUL would have a value of 0010 and a memory space attribute of P space the code generated would load into Y memory starting at 8000 and the runtime address associated with the code would start at 0010 4 5 4 Circular Buffers To take advantage of the special DSP addressing capabilities a circular buffer must be aligned on an appropriate address boundary with respect to its size For a buffer to be located properly in memory the lower bits of the starting address which encompass one less than the buffer size must be zero For example the lowest address greater than zero at which a buffer of size 32 may be located is 32 20 hexadecimal More generally the buffer base address must be modulo the buffer size or a multiple of 2 where 2 is greater than or equal to the size of the buffer Buffers may be allocated manually or by using one of the assembler s special buffer di rectives ORG X 100 BUF1 DS 24 BUF2 DSM 32 LI SoE0 SKu ECLUA AAINIAALLLLLLLULLAAAZAXnAAAAOULLLLLLLLLLLLLLULL EI MOTOROLA DSP
179. ed symbol names if applicable A separate report is generated for each memory space where data has been reserved for use by the program The format of the report is given in Appendix D The assembler object file is a binary COFF Common Object File Format file with exten sions and adaptations to support symbolic debugging and to make DSP object files trans portable among host platforms COFF is a formal definition for the structure of machine code files It is derived from AT amp T Unix System V and represents a quasi de facto stan dard for object file formats Refer to Appendix E for more information on Motorola DSP COFF structure and layout D LHLAALLLLLLLLLLLLLLLDECA AAALZ ALLLLLLLALTF LLLLLLLALELT 18 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS 3 1 INTRODUCTION An expression represents a value which is used as an operand in an assembler instruction or directive An expression is a combination of symbols constants operators and paren theses Expressions may contain user defined labels and their associated integer or floating point values and or any combination of integers floating point numbers or ASCII literal strings In general white space a blank or tab is not allowed between the terms and operators of an assembler expression Expressions otherwise follow the convention al rules of algebra and boolean arithmetic 3 2 ABSOLUTE AND RELATIVE EXPRESSIONS An expression may be either relati
180. ed with this directive See also LIST OPT EXAMPLE IF LISTOFF NOLIST Turn the listing off ENDIF CC 138 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES OPT Assembler Options OPT lt option gt lt option gt lt option gt lt gt The OPT directive is used to designate the assembler options Assembler options are giv en in the operand field of the source input file and are separated by commas Options also may be specified using the command line O option see Chapter 1 All options have a default condition Some options are reset to their default condition at the end of pass one Some are allowed to have the prefix NO attached to them which then reverses their meaning Options can be grouped by function into five different types Listing format control Reporting options Message control Symbol options Assembler operation gt Listing Format Control These options control the format of the listing file FC Fold trailing comments FF Form feeds for page ejects FM Format messages PP Pretty print listing RC Relative comment spacing MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 139 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Reporting Options These options control what is reported in the listing file CEX Print DC expansions CL Print condit
181. enclosing loop Instruction cannot appear in interrupt vector locations Some instructions cannot be used reliably as interrupt code These instructions in clude RTI RTS DO and ENDDO Instruction does not allow data movement specified using MOVE encoding Instruction does not allow data movement specified using MOVEP encoding Instruction does not allow data movement specified using MOVES encoding An inappropriate MOVE type instruction was written given the type of the oper ands The assembler substitutes a valid encoding for the operands in question Invalid destination register for this instruction using TFR3 encoding The destination register for a TFR2 instruction was not either X or Y Invalid interrupt vector address using SWI address Currently only the SWI address is supported by the TRAPcc instruction short absolute address cannot be forced short absolute addressing is not valid for this operation An appropriate ad dressing mode long absolute short jump short absolute is substituted short absolute address cannot be forced long substituted short absolute addressing is not valid for this operation The assembler substi tutes long absolute addressing short address cannot be forced short addressing is not valid for this operation An appropriate addressing mode long short short jump is substituted ee 194 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER
182. ended for cross development such that a given object file would be usable on all targeted host systems The following sections outline the differences and changes between standard COFF and Motorola DSP COFF DSP ASSEMBLER REFERENCE MANUAL 279 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 4 14 Multiple Memory Spaces Standard COFF has no built in mechanism for accommodating multiple memory spaces It does handle the notion of separate text and data sections and a possible extension would have been to define section types for the new memory areas This quickly be comes unwieldy when mapping information internal external port A B is considered as well The solution was to extend addressing information to include the memory and mapping with the address value itself This is done by defining a C language typedef called CORE ADDR which holds both the memory and mapping data along with the memory address For any address context in the COFF file a CORE is used rather than for example an unsigned long A description of the CORE ADDR format is shown in Fig ure E 28 Declaration Name Description long 0 Memory address enum w1 mape Memory mapping Figure E 28 CORE_ADDR Format The enumeration values for the memory mapping field are shown in order in Figure E 29 ____ ___ _ _____ ___ _ ______ __ ______________ 280 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E
183. endix F DEVICE DEPENDENT INFORMATION F 4 DSP56100 INFORMATION The Motorola DSP56100 refers to a family of high speed low power programmable CMOS processors The DSP56100 supports16 bit signed fixed point fractional and signed and unsigned integer arithmetic 4 1 Instruction Set Summary DSP56100 instructions can be grouped by function into six types Arithmetic instructions Logical instructions Bit manipulation instructions Loop instructions Move instructions Program control instructions amp F 4 1 1 Arithmetic Instructions The DSP56100 instructions used for arithmetic operations are ABS Absolute value ADC Add long with carry ADD Add ASL Arithmetic shift accumulator left ASL4 4 bit arithmetic shift accumulator left ASR Arithmetic shift accumulator right ASR4 4 bit arithmetic shift accumulator right ASR16 16 bit arithmetic shift accumulator right CLR Clear accumulator CLR24 Clear 24 MS bits of accumulator CMP CMPM Compare magnitude DEC Decrement accumulator DEC24 Decrement 24 MS bits of accumulator DIV Divide iteration DMAC Multiply accumulate with 16 bit right shift EXT Sign extend accumulator IMAC Integer multiply accumulate IMPY Integer multiply INC Increment accumulator Instruction allows parallel data move a ea _____________________________________________ MOTOROLA DSP ASSEMBLE
184. er DC directives for example bound for data X Y L memory Bss sections are used for uninitialized blocks resulting from assembler DS and similar directives Padding sections are generated to provide align ment when a modulo or reverse carry buffer is declared The block section attribute flags a block data section described above The overlay flag indicates the section is part of an overlay Macro sections represent code and data generated during a macro expansion Dummy sections are used internally by the assembler to mark empty sections after the first assembly pass Empty sections may still appear in the object file if a symbol is asso ciated with a section which contains no data The noload group and copy attributes are not used at present E 3 3 2 Relocation Information Object files have one relocation entry for each relocatable reference in the text or data The relocation information consists of entries with the format described in Figure E 8 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 261 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Declaration Name Description long r vaddr Address of reference long r symndx String table index unsigned long r type Relocation type Figure E 8 Relocation Entry Format The address field represents the relocatable address within the section raw data where a modification is needed In standard COFF the field points to an entry in the symb
185. er greater than zero and cannot contain any for ward references symbols that have not yet been defined lt label gt if present will be assigned the value of the runtime location counter at the start of the directive processing See also DSM DSR EXAMPLE S BUF DS 12 SAMPLE BUFFER ___ _______ _ ________ _______ __ ___ OO DSP ASSEMBLER REFERENCE MANUAL 105 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DSM Define Modulo Storage lt label gt DSM lt expression gt The DSM directive reserves a block of memory the length of which in words is equal to the value of lt expression gt If the runtime location counter is not zero this directive first advances the runtime location counter to a base address that is a multiple of 2 where 2K gt expression error will be issued if there is insufficient memory remaining to es tablish a valid base address Next the runtime location counter is advanced by the value of the integer expression in the operand field expression can have any memory space attribute The block of memory reserved is not initialized to any given value The result of expression must be an absolute integer greater than zero and cannot contain any for ward references symbols that have not yet been defined The expression also must fall within the range 2 lt expression lt m where m is the maximum address of the target DSP label if presen
186. er is delivered on a 3 1 2 diskette written in SunOS bar for mat G 3 1 Hardware Requirements The assembler will run on any Sparc workstation running SunOS version 4 0 or later G 3 2 Installation The assembler and any accompanying support files may be read from diskette into the current directory using the following bar command sequence xvZf dev rfdO The assembler may be placed in any generally accessible area usually usr bin or usr Be sure that it is located in a directory listing in the PATH environment variable of those who need to use it Also insure that the execute access bits for the file are set when it is copied to disk this can be done with the chmod utility see your User Manual for information on chmod LE LLNLLLLLDLAALAZAZLLZZ C jE RA LLLLZIIILLO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 309 Appendix HOST DEPENDENT INFORMATION G 3 3 Source File Input to the assembler should be a standard ASCII text file with newline characters ASCII LF OAH as line terminators This type of file is created by the standard Unix text editors such as vi and by other editors which run in the SunOS environment such as Emacs Assembler source code imported from other environments may need to be converted de pending on the level of filtering done on the code when it was transferred to the Sun sys tem Binary text files sent from for example a PC or compatible machine will need to h
187. ernal memory is set to hex 100 The load counter is tagged as 2 mapped to external memory and set to hex C000 where the built in bootstrap program will begin loading bytes after processor reset The files are assembled using the command below ASM56100 A B L BOOTPROJ LI LLALULALLLLLLULLLLAAOLLALA AAALALLLLLLULALLLZ L EL OL A A LLL LUILT 58 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT The assembler is invoked in absolute mode A option and generates an executable and listing file All files on the command line are processed as a single assembly run and all are used to produce the output BOOTPROJ ASM is read first and sets up the appropriate absolute addresses for later sections Since no explicit base address was given in the sec tion files both load and runtime addresses will continue from one section to the other e g they will be contiguous For example if only two words of instruction were between each of the START and END labels the runtime value for END1 and START2 would be hex 102 However the load address of the code associated with these labels assuming a 16 bit target word size would be C004 hexadecimal Similarly the runtime value for END2 would be 104 hex and the corresponding load address would be C008 hexadecimal 4 8 2 Relative Mode Implementation In relative mode each of the source files is assembled separately to create individual ob ject
188. error in macro name list A character other than a comma was found separating the arguments in a PMAC RO directive name list Syntax error in symbol name list A character other than a comma was found separating the arguments in an XDEF or XREF directive name list Tag name not found A matching tag name could not be found for the current source level debug struc ture or union declaration I CLALLAAAAZA A ALLLLLLONONONOA5LL lITILLLLLLLLLLLLBLOL LLLLLLLLLHO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 227 Appendix ASSEMBLER MESSAGES Too many fields specified for instruction An instruction field that was expected to be empty contained data other than a com ment This can happen when an instruction using only the X data transfer field en counters data other than a comment in the Y data transfer field Two dummy arguments are the same Two dummy arguments in a macro definition MACRO directive have the same name UNDEF symbol must be a global symbol name The argument to an UNDEF directive cannot be a local label e g a name starting with the underscore character Unexpected end of file missing ENDF Unexpected end of file missing ENDI Unexpected end of file missing ENDL Unexpected end of file missing ENDW Unexpected end of file missing UNTIL The matching end of conditional or end of loop directive for a conditional or loop ing structured control statement was never found Unexpected e
189. es es eis tay 19 absolute 19 Address i euet ade eec dt ieri ien 141 526 180 condition code 178 CONSTANT 21 formatting i 180 25 internal representation 21 object MG uiro d dex E 283 operand comparison 179 ODS AOI rp 22 155 relat 19 SIMPE t c 178 F File command line 4 NEUE subs ee ak 5 129 En 13 Ca CR 5 18 143 sso boi dmi eS EDS 6 MERE CPP 3 253 OUIDUL uiuis da X 8 SOUICE Es 8 13 FUNCOM P 25 85 PADS zo sues Top pe Mc OR IEEE 26 28 oe ees 27 28 RND 26 36 br ul 26 29 EDAD EE 27 36 26 29 eae 27 36 ene 26 29 aca 26 37 OUD ec tig Meats es 28 29 ul DRE CERE S 26 37 GEB trestle he dos RAI IUS 26 29 SIND atre ot aay 26 37 GH Kae eens utere rr eni P 28 c 26 37 ONT 27 30 3 27 26 30 TAN 26 37 CONVE SION ua out i t 27 TENE ru E 26 38 5
190. es for text and data segments respectively The text and data end values contain the high addresses for text and data segments respectively Note that addresses are expressed in terms of the C language typedef CORE A CORE is a structure containing a long 4 byte address and an enumeration type which classifies the address according to memory space X Y L P and memory mapping internal external etc See section E 4 1 for more informa tion on the CORE ADDR structure Declaration Name Description long int magic Magic number long int vstamp Version stamp long int tsize Size of text in words long int dsize Size of data in words long int bsize Size of uninitialized data in words CORE ADDR entry Program entry point CORE ADDR text start Base address of text CORE ADDR data start Base address of data CORE ADDR text end End address of text CORE ADDR data end End address of data Figure E 5 Motorola DSP Optional Runtime Header Format E 3 3 Sections A section is the smallest portion of an object file that is treated as one separate and distinct entity Sections can accommodate program text initialized and uninitialized data and block data COFF sections in DSP object files may be grouped under a logical section defined by the assembler SECTION directive see Chapter 6 It mistake to assume that every file will have a specific number of sections or
191. essions Moreover there must be white space between the structured control directive and the expression and between the expression and any optional directive modifier THEN DO An assembler expression Chapter 3 used as an operand in a structured control statement expression must not have white space in it since it is parsed by the standard assembler evaluation routines 0 GT 2 no white space in first operand 7 5 2 FOR LOOP Formatting The FOR and LOOP directives represent special cases The FOR structured control statement consists of several fields opi op2 TO lt op3 gt BY lt 4 gt DO There must be white space between all operands and other syntactic entities such as z TO BY and DO As with expression formatting an assembler expression used as an operand must not have white space in it FOR X CNT 0 TO Y targ 2 1 BY CVI POW 2 0 CVF R In the example above the FOR loop operands represented as assembler expressions symbol function do not have embedded white space whereas the loop operands are always separated from structured control statement keywords by white space The count field of a LOOP statement must be separated from the LOOP directive by white space The count itself may be any arbitrary assembler expression and therefore must not contain embedded blanks 7 5 3 Assembly Listing Format Structured control statements begin with the dire
192. et value greater than string size The offset parameter in a substring construct is larger than the composite length of the input string argument Only absolute addressing allowed The instruction allows only absolute addressing a L UA A A AEAA ALtLAA ADLLLLLLLLLLLLLLEZT 218 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Only absolute and register direct addressing allowed The instruction allows only absolute and register direct addressing Only immediate addressing allowed The instruction allows an immediate source operand only Only immediate and register direct addressing allowed The instruction allows only immediate and register direct addressing modes Only immediate and register direct and indirect addressing allowed The instruction allows only immediate register direct and register indirect ad dressing modes Only PC relative addressing allowed The instruction allows only PC relative addressing Only PC relative and register direct addressing allowed The instruction allows only PC relative and register direct addressing Only post increment by offset addressing allowed with LMS move The initial data move destination operand in an LMS move must use post incre ment by offset addressing Only post increment or post increment by offset addressing allowed Moves to P memory allow only post increment or post increment by offset address ing Only register direct addressing allowed The instr
193. exists it will be overwritten F lt argfil gt Indicates that the assembler should read command line input from lt argfil gt lt argfil gt can be any legal operating system filename including an optional pathname lt argfil gt is a text file containing further options arguments and filenames to be passed to the assembler The arguments in the file need be separated only by some form of white space blank tab newline A semi colon on a line following white space makes the rest of the line a com ment The F option was introduced to circumvent the problem of limited line lengths in some host system command interpreters It may be used as often as desired including within the argument file itself Command options may also be supplied using the DSPASMOPT environment variable See the dis cussion of DSPASMOPT under options at the beginning of this section Example ASM96000 Fopts cmd Invoke the assembler and take command line options and source filenames from the command file OPTS CMD I C LLLLLLULLUL LLLILALLZAGILAL 6 A DLABDROAIEAN ABDALLDLLLLLLTL U LLIIT 4 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 1 MOTOROLA DSP ASSEMBLER Send source file line number information to the object file This option is val id only in conjunction with the B command line option The generated line number information can be used by debuggers to provide source level de bugging E
194. expression gt Returns the cosine of lt expression gt as a floating point value The memory space attribute of the result will be None Example DC COS CVF COUNT FREQ compute cosine value CTR L R If L is specified as the argument returns the counter number of the load location counter If R is specified returns the counter number of the runtime location counter The counter number is returned as an integer value with memory space of None Example CNUM CTR R runtime counter number LULLAZLZZZLLLLA I A AOOA PTOLALILLLLLLLoL o01LLLLULA MLALLALEEIT 30 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS CVF lt expression gt Converts the result of lt expression gt to a floating point value The memory space attribute of the result will be None Example FLOAT SET QCVF 5 FLOAT 5 0 CVI lt expression gt Converts the result of lt expression gt to an integer value This function should be used with caution since the conversions can be inexact e g floating point values are truncated The memory space attribute of the result will be None Example INT SET CVIK 1 05 INT 1 CVS X Y L P E N lt expression gt Converts the memory space attribute of lt expression gt to that specified by the first argument returns lt expression gt See section 3 3 for more information on memory space attributes The lt expression gt may be relative or
195. f an address register Rn or Nn is changed in the previous in struction the new contents are not available for use as a pointer until the next in struction If the RP option is in effect see the OPT directive Chapter 6 the 192 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix C ASSEMBLER MESSAGES assembler produces this warning and generates a NOP prior to the offending in struction Debug directives ignored use command line debug option A source level debug directive was encountered but the assembler command line G option was not given Destination operand assumed short Neither operand in a MOVEP instruction is explicitly declared I O short however the source operand does not qualify so the destination operand is assumed to be the I O short operand Directive not allowed in command line absolute mode The MODE directive is ignored when the assembler command line A option is ac tive Duplicate listing file specified ignored Duplicate object file specified ignored The B or L command line options were given more than once ENDDO instruction not inside DO loop An ENDDO instruction was found outside the scope of an active DO loop Explicit bottom margin ignored with page length of zero Explicit top margin ignored with page length of zero The top or bottom margin parameters to a PAGE directive are ignored because the page length parameter was zero Expression involves incompatible memory spaces The
196. f present will be assigned the value of the runtime location counter after a valid base address has been established Only one word of object code will be shown on the listing regardless of how large the first expression is However the runtime location counter will be advanced by the number of words generated See also BSC BSB DC EXAMPLE BUFFER BSM BUFSIZ FFFFFFFF INITIALIZE BUFFER TO ALL ONES EEE 98 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES BUFFER Start Buffer BUFFER lt M gt lt gt BUFFER directive indicates the start of a buffer of the given type Data is allocated for the buffer until an ENDBUF directive is encountered Instructions and most data def inition directives may appear between the BUFFER and ENDBUF pair although BUFF ER directives may not be nested and certain types of directives such as MODE ORG SECTION and other buffer allocation directives may not be used The expression rep resents the buffer size If less data is allocated than the size of the buffer the remaining buffer locations will be uninitialized If more data is allocated than the specified size of the buffer an error is issued The BUFFER directive sets the runtime location counter to the address of a buffer of the given type the length of which in words is equal to the value of expression The buffer type may be either Modulo or Reverse c
197. f the MD option is enabled The lines DC 1 DC 2 DC 3 will only be shown on the source listing if the MEX option is enabled See the OPT directive in this chapter for more information on the MD and MEX options LI s SL LLALLLLULLOEC LLLLLLLLLLLLLLAL LT 112 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DUPF Duplicate Sequence In Loop lt label gt DUPF lt dummy gt lt start gt lt end gt lt increment gt ENDM The block of source statements defined by the DUPF and ENDM directives will be repeat ed in general lt gt lt start gt 1 times when increment is 1 start is the starting value for the loop index end represents the final value increment is the increment for the loop index it defaults to 1 if omitted as does the start value The dummy parameter holds the loop index value and may be used within the body of instructions label if present will be assigned the value of the runtime location counter at the start of the DUPF directive processing See also DUP DUPA DUPC ENDM MACRO EXAMPLE If input source file contained the following statements DUPF NUM 0 7 MOVE 0 R NUM ENDM then the assembled source listing would show DUPF NUM 0 7 MOVE 310 RO MOVE 0 R1 MOVE 0 R2 MOVE 0 R3 MOVE 0 R4 MOVE 0 R5 MOVE 0 R6 MOVE 0 R7 ENDM
198. files The object files are combined to build a single executable file A preamble file is not necessary to handle bootstrap files in relative mode because the addresses are es tablished at link time In order to generate bytewide load addresses the LB option can be specified on the assembler command line using the O command line option 5 56100 B L OLB This command assembles the file SECT1 ASM and creates a relocatable object file called SECT1 CLN The listing file shows that the starting address of the section is zero howev er because of the LB option on the command line the load counter will increment at twice the rate of the runtime counter assuming 16 bit DSP56100 family target processor A similar command is used to assemble the SECT2 module The two files are linked as fol lows DSPLNK BBOOTPROJ CLD OPI 1 100 OPE 2 C000 The linker scans the command line and sets the base addresses for P internal and exter nal memory The quotes around the O options are necessary to avoid interpretation of parentheses by some host command interpreters Here the P counter number 1 is set to hex 100 and mapped to internal memory likewise the P counter number 2 is set to hex C000 and mapped to external memory Base addresses can also be established with the linker memory control file Since no explicit overlay base addresses were encountered in the source files both load and runtime addresses for the sect
199. floating point number The memory space attribute of the result will be None Example FRC EQU UNF 400000 FRC 0 5 XPN lt expression gt Returns the exponential function base e raised to the power of lt expression gt as a floating point value The memory space attribute of the result will be None Example EXP EQU XPN 1 0 lt EXP 2 718282 EEE 38 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 1 INTRODUCTION The Motorola DSP assemblers provide several directives designed to assist in the devel opment of large software projects Complex software projects often are divided into small er program units These subprograms may be written by a team of programmers in parallel or they may be programs written for a previous development effort that are going to be reused The assembler provides directives to encapsulate program units and permit the free use of symbol names within subprograms without regard to symbol names used in other programs These encapsulated program units are called sections Sections are also the basis for relocating blocks of code and data so that concerns about memory placement are postponed until after the assembly process 4 2 SECTIONS A section is bounded by a SECTION directive and an ENDSEC directive For example SECTION section name GLOBAL STATIC LOCAL Section source statements ENDSEC All symbols that are defined within a section have the se
200. functions is de scribed in Figure E 26 The source file line number is retained The x endndx provides a link to the next beginning of block or function symbol in the symbol table Declaration Description Unused zero filled unsigned long Source file line number Unused zero filled long int x endndx Index of next beginning of block or function unsigned long x type Function prologue epilogue index Unused zero filled Figure E 26 Beginning of Block or Function Auxiliary Entry E 3 4 6 9 Structure Union and Enumeration Names The format for auxiliary entries related to structure union and enumeration names is giv en in Figure E 27 The tag index is used to access the tag symbol record that describes this structure Note that in Motorola DSP COFF the size of the associated structure or union is in words as opposed to bytes as in standard COFF 278 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Declaration Name Description long int x tagndx Tag index Unused zero filled unsigned long Size of structure union or enumeration in words Unused zero filled Figure E 27 Structure Union or Enumeration Name Auxiliary Entry E 3 4 7 Object File Comments Object file comments are stored in a single COFF symbol table entry The sy
201. g Function ENC The ENC provides two encoding expressions for the same instruction This is useful in cases where the unknown value of an external operand can affect which expression is used for the final encoding The function takes four arguments The first argument to the function is the external operand expression The second argument is the absolute value beyond which the second encoding expression is used over the first The third argument is the first encoding expression and the last argument is the second encoding expression M M n MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 287 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF 5 22 2 12 42 2 288 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 1 INTRODUCTION The Motorola DSP assemblers are quite similar in terms of functional capabilities Virtu ally every assembler feature is available across all Motorola DSP processor families The devices for which the assemblers generate code however differ architecturally For ex ample the DSP56000 is a binary fractional machine with a suitably oriented register and instruction set The DSP96000 is a floating point processor with floating point instructions and an alternatively named register set The following sections describe characteristics that vary among Motorola DSPs and how these differences relate to assembler use and operation
202. g command line ASM56000 B MAIN IO In this example it is not clear whether the file MAIN is a source file or is meant to be an argument to the B option If the ambiguity is not resolved the assembler will assume that MAIN is a source file and attempt to open it for reading This may not be what the programmer intended There are several ways to avoid this ambiguity If MAIN is supposed to be an argument to the B option it can be placed immediately after the option letter 5 56000 10 If there are other options on the command line besides those that take op tional arguments the other options can be placed between the ambiguous option and the list of source file names 5 56000 B MAIN V IO An alternative is to use two successive hyphens to indicate the end of the option list 5 56000 B MAIN IO In this latter case the assembler interprets MAIN as a source file name and uses the default naming conventions for the B option I 2 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 1 MOTOROLA DSP ASSEMBLER Indicates that the assembler should in absolute mode generating ab solute object file when the B command line option is given By default the assembler produces a relocatable object file that is subsequently processed by the Motorola DSP linker See Chapter 4 SOFTWARE PROJECT MAN AGEMENT for more information on assembler modes B lt objfil gt This
203. g consistent with the instruction format unless the FORCE LONG directive is active If this is not desired then the long absolute form of addressing can be forced by preceding the absolute address by the long addressing mode force op erator See also FORCE EXAMPLE Since the symbol DATAST is a not a forward reference in the following sequence of source lines the assembler would pick the short absolute form of addressing DATAST EQU Y 23 MOVE DO L Y DATAST If this is not desirable then the long absolute addressing mode can be forced as shown below DATAST EQU Y 23 MOVE DO L Y SDATAST gt MM Ql MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 91 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Immediate Addressing Mode The pound sign is used to indicate to the assembler to use the immediate addressing mode EXAMPLE CNST EQU 5 MOVE CNST DO L 92 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES lt Immediate Short Addressing Mode Force Operator Many DSP instructions allow a short immediate form of addressing If the immediate data is known to the assembler on pass one not a forward or external reference or the FORCE SHORT directive is active then the assembler will always pick the shortest form of immediate addressing consistent with the instruction If the immediate data is a forward
204. gister Relative equate must be in same section An EQU directive with a relative expression operand must be defined in the same section as the section associated with the operand expression DI LXAAAA AAXAALLLLLLLLLLLLLLLLLLLALALLLLLLLLLLLLLLLL A IIS2E MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 221 Appendix ASSEMBLER MESSAGES Relative expression must be integer A relative expression must evaluate to an integer value Relative expression not allowed Relative expressions are not allowed as arguments to the assembler built in func tions Relative SET must be in same section A SET directive with a relative expression operand must be defined in the same section as the section associated with the operand expression Relative terms from different sections not allowed Relative terms defined in different sections are not allowed in expressions This is because the relationship between the terms is based on where the enclosing sec tions are located in memory Reserved name used for symbol name One of the DSP register names has been used as a label operand or directive ar gument These register names in either upper or lower case are reserved by the assembler See Appendix F for a list of DSP register names Runtime space must be P An instruction was encountered and the runtime memory space was not set to P Program SCO option must be used before any label The SCO option sends structured control statements to
205. han machine word size The width parameter of a FLD function has a value larger than can fit in the tar get machine word XDEF without preceding SECTION directive XREF without preceding SECTION directive An XDEF or XREF directive was encountered outside any previously defined sec tion XLL option must be used before any local label The XLL option must be activated before any local labels are encountered so that the assembler can make the appropriate entries in the symbol table XR option must be used before any label The XR option must be activated before any labels are encountered so that the as sembler can make the appropriate entries in the symbol table ___ ______ _ ___ ___ __ _______ ___ B DSP ASSEMBLER REFERENCE MANUAL 229 Appendix ASSEMBLER MESSAGES C 5 FATAL ERRORS lt mode gt encoding failure A bad address mode indicator or register number was passed to the assembler en coding routines lt mode gt represents the register set or addressing mode in ques tion This is a serious internal error that should be reported to Motorola Absolute mode select failure The mode indicator passed to the absolute addressing mode selection logic was not valid This is a serious internal error that should be reported to Motorola Arithmetic exception An internal floating point exception occurred while evaluating an expression The assembler cannot continue Cannot encode instructio
206. he next ENDSEC directive are considered global The effect is as if every symbol in the section were declared with the GLOBAL directive This is useful when a section needs to be independently relocatable but data hiding is not required If the LOCAL qualifier follows the section name in the SECTION directive then all sym bols defined in the section until the next ENDSEC directive are visible to the immediately enclosing section The effect is as if every symbol in the section were defined within the parent section This is useful when a section needs to be independently relocatable but data hiding within an enclosing section is not required Symbols that are defined with the SET directive can be made visible with XDEF only in absolute mode and the section name associated with the symbol will be the section name of the section where the symbol was first defined This will be true even if the symbol value is changed in another section DSP ASSEMBLER REFERENCE MANUAL 41 Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 3 2 Sections and Macros The division of a program into sections controls not only labels and symbols but also mac ros and DEFINE directive symbols Macros defined within a section are private to that section and are distinct from macros defined in other sections even if they have the same macro name Macros defined outside of sections are considered global and may be used within any section Similarly DE
207. he object file as a comment refer to the object format description in Appendix label is not allowed with this directive See also IDENT EXAMPLE COBJ Start of filter coefficients 4 100 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES COMMENT Start Comment Lines COMMENT lt delimiter gt lt delimiter gt The COMMENT directive is used to define one or more lines as comments The first non blank character after the COMMENT directive is the comment delimiter The two delimit ers are used to define the comment text The line containing the second comment delim iter will be considered the last line of the comment The comment text can include any printable characters and the comment text will be reproduced in the source listing as it ap pears in the source file A label is not allowed with this directive EXAMPLE COMMENT This is a one line comment COMMENT This is a multiple line comment Any number of lines can be placed between the two delimiters MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 101 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DC Define Constant lt label gt DC lt gt lt gt lt gt The DC directive allocates and initializes word of memory for each arg argument arg may be a numeric constant a singl
208. he object file is relocatable there are extra structures which the assembler and linker generate to support special constructs such as logical sections buffers and overlays The optional link file header contains information which the linker requires it is described in section E 3 2 Every symbol table entry for a section in a relocatable file has an extra auxiliary entry described in section E 3 4 6 2 One special DSP COFF structure not documented elsewhere is the comment symbol A comment symbol table entry is emitted either indirectly via the assembler IDENT directive or directly with the directive see Chapter 6 A comment symbol table entry may be identified by a symbol name of cmt and a type and storage class of zero The value field of a comment symbol holds the offset into the string table of the comment text The section number for a comment symbol produced with the IDENT directive is always 1 Comment symbols generated with the COBJ directive have the section number of the section where the directive appears in the source file Comment symbols have no auxiliary entry E 5 OBJECT FILE DATA EXPRESSION FORMAT Object file data expressions are used in data relocation records to represent values to be loaded into memory An expression is a combination of symbols constants operators DSP ASSEMBLER REFERENCE MANUAL 283 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF and parentheses Expressi
209. his name becomes the mnemonic by which the macro is subsequently invoked called If the name of the macro is the same as an existing assembler directive or mnemonic opcode the macro will replace the direc tive or mnemonic opcode and a warning will be issued The warning can be avoided by the use of the RDIRECT directive which is used to remove entries from the assembler s directive and mnemonic tables If directives or mnemonics are removed from the assem bler s tables then no warning will be issued when the assembler processes macros whose names are the same as the removed directive or mnemonic entries However if a macro is defined through the MACLIB directive which has the same name as an existing directive or opcode it will not automatically replace that directive or opcode as previously described In this case the RDIRECT directive must be used to force the replacement See the description of the MACLIB directive below The macro call causes source statements to be generated The generated statements may contain substitutable arguments The statements produced by a macro call are rel atively unrestricted as to type They can be any processor instruction almost any assem bler directive or any previously defined macro Source statements resulting from a macro call are subject to the same conditions and restrictions that are applied to state ments written by the programmer To invoke a macro the macro name must appear in the operation
210. ice etc D 2 LISTING FILE COMMENTARY Figure D 1 is an assembler generated listing of a program employing a 16 point Decima tion in Time Fast Fourier Transform FFT routine implemented as a macro The listing illustrates a selection of the format features offered by the assembler The following sec tion highlights some of those features At the top of every listing page is a banner which identifies the assembler and lists its ver sion number the date and time of assembly the current input file name and the page number Following the banner on pages other than the first would appear any titles or sub titles specified using the TITLE and STITLE directives respectively On line 1 of this particular program an OPT directive specifies data value expansion of declared constants CEX cross referencing of both local and global symbol names LOC and CRE and generation of memory utilization reports at the end of the listing MU The format of cross reference and memory utilization reports is discussed in later sections On line 2 a PAGE directive specifies the page dimensions Note that line 3 is missing In the source file there is a TITLE directive on line 3 TITLE and STITLE directives do not appear in the listing file The title itself does not appear until the next page of the listing A MACLIB directive declares a macro library path on line 5 The significance of this to the appearance of the listing will be discussed shortly The com
211. iles NOMSW Do notissue warning on memory space incompatibilities NONL default reset Do not display nesting levels on listing NONS Do not allow scoping of symbols within nested sections NOPP Do not pretty print listing file Source lines are sent to the listing file as they are encountered in the source with the exception that tabs are expanded to spaces and continuation lines are concatenated into a single physical line for printing NOPS Do not pack strings in DC directive Individual bytes in strings will be stored one byte per word NOPSM DSP56166 only default reset Do not allow programmable short address ing NORC default reset Do not space comments relatively NORP default reset Do not generate instructions to accommodate pipeline delay NORSV 05 96000 only default reset Do not perform reserve memory checks NOSCL not maintain the current local label scope when a structured control state ment label is encountered EEE 144 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES NOSI DSP56000 only default reset Interpret an eight bit short immediate value moved to a fractional register as a short unless forced long DSP56100 only default reset Do not interpret eighth bit of short immediate value as implied sign extension NOU default reset Do not print the lines excluded from the assembly due to a conditional assembly directive NOUR
212. in a LOOP statement This can be any ar bitrary assembler expression Chapter 3 All structured control statements may be followed by normal assembler comments on the same logical line 7 39 4 Statement SYNTAX BREAK ee _22 2222226 172 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS FUNCTION The BREAK statement causes an immediate exit from the innermost en closing loop construct WHILE REPEAT FOR LOOP NOTES A BREAK statement does not exit an IF THEN ELSE construct If a BREAK is encountered with no loop statement active a warning is issued BREAK should be used with care near ENDL directives or near the end of DO loops It generates a jump instruction which is illegal in those contexts EXAMPLE WHILE x r1 GT 0 sloop until zero is found AF cS BREAK causes exit from WHILE loop ENDI any instructions here are skipped ENDW execution resumes here after BREAK 7 3 2 CONTINUE Statement SYNTAX CONTINUE FUNCTION The CONTINUE statement causes the next iteration of a looping construct WHILE REPEAT FOR LOOP to begin This means that the loop ex pression or operand comparison is performed immediately bypassing any subsequent instructions NOTES If a CONTINUE is encountered with no loop statement active a warning is issued H LLLLLALALLLLLLLLLLULLLLLLLLAA lLCLLULLALLLZAZ MOTOROLA DSP ASSE
213. in the instruction PC relative address too large to use short long substituted The PC relative offset is not within the range specifying a short PC relative offset even though the short forcing operator has been used The assembler substitutes long PC relative addressing Possible duplicate destination register In the DSP96000 assembly language there is potential ambiguity in the specifica tion of registers for some types of DALU instructions and parallel moves The as sembler detects the ambiguity and warns if a duplicate register write is possible Post update operation will not occur on destination register If the source operand in a MOVE operation specifies a post update addressing mode and the destination register is the same as the source operand register then the post update operation will not take place PRCTL directive ignored no explicit listing file The directive takes effect only if the L option is used on the command line to explicitly specify a listing file Redefinition of symbol A symbol used in a DEFINE directive has been redefined without an intervening UNDEF directive The assembler discards the previous definition and replaces it with the new definition Rounding not available with LMS move using MAC MPY encoding A MACR or MPYR instruction was specified in conjunction with LMS move syntax Runtime location counter overflow Runtime location counter underflow The runtime location counter
214. ing to DSP memory internal E ex ternal R ROM A port A B port B If not present no explicit mapping is done lt gt absolute integer expression representing the counter number to be used as the runtime location counter Must be enclosed in parenthe ses Should not exceed the value 65535 expl Initial value to assign to the runtime counter used as the rlc If exp1 is a relative expression the assembler uses the relative location counter expl is an absolute expression the assembler uses the absolute loca tion counter If lt exp1 gt is not specified then the last value and mode that the counter had will be used Ims Which memory space X Y L P or E will be used as the load memory space If the memory space is L any allocated datum with a value greater than the target word size will be extended to two words otherwise it is trun cated If the memory space is E then depending on the memory space qual ifier any generated words will be split into bytes one byte per word or a 16 8 bit combination I LLLLLLNLLLLLLLLLLLCA4B L OGLLLLLLLA LAZZIT 46 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT llc Which load counter H L or default if neither H or L is specified that is as sociated with the Ims will be used as the load location counter Imp Indicates the load physical mapping to DSP
215. initions NOMD Line 68 of the listing contains an ORG directive which sets up the initial value of the runt ime location counter to 200 The memory space and counter value are shown to the right of the line number column If an overlay had been defined here see Chapter 4 the load memory space and location counter would appear to the right of the runtime space and counter value The line numbers then skip to line 151 which contains a call to the macro DITFFT The macro was not defined in this source file but its definition was read from an external file in a macro library directory as specified by the prior MACLIB directive The skipped line numbers represent that definition which does not appear due to the previ ously given NOMD option Line 203 illustrates several listing features of the assembler The plus sign to the right of the line number column indicates a macro expansion in progress The next field is the memory space and location counter value followed by the encoded instruction The mne monic and operand fields are spread out for easier reading The 00000227 by itself on line 204 is the loop address for the DO loop it is stored in the second instruction word and represents one less than the address of the label end pass On page 7 there are two errors reported in the listing Error messages contain the listing line number the source file name and the source line number where the error occurred a severity level WARNING
216. into the symbol table for the entry containing the function name Subsequent entries have actual line numbers and addresses of the program text corresponding to the line numbers The line number entries are relative to the beginning of the function and appear in increasing order of address Symbol index 0 Physical address Line number Physical address Line number Symbol index 0 Physical address Line number Physical address Line number Figure E 10 Line Number Grouping E 3 4 Symbol Table The COFF symbol table serves a dual purpose it provides resolution for symbolic refer ences in relocation expressions during linking and it establishes a framework for the han dling of symbolic debug information The symbol table consists of at least one fixed length entry per symbol with some symbols followed by auxiliary entries of the same size Because of symbolic debugging requirements the order of symbols in the symbol table is very important Whereas an individual symbol table entry can completely describe a sin gle debugging entity the entities exist within the framework of the source language that produced them For example symbol scoping and function blocks in C are represented by the appropriate ordering of begin end block entries in the symbol table Symbols in the symbol table appear in the sequence shown in Figure E 11 A COG Gl MOTOROLA DSP ASSEM
217. ion number 2 marks symbolic debugging symbols including structure union enumeration tag names typedefs and the name of the file A section number of 1 indicates that the symbol has a value but is not relocatable Examples of absolute valued symbols include automatic and register vari ables function arguments and end of structure symbols A section number of 0 flags a relocatable external symbol that is not defined in the current file Section numbers greater than zero correlate to the ordinal sequence of sections in the object file E 3 4 4 Symbol Type The type field in the symbol table entry contains information about the basic and derived type for the symbol This information is generated by the compiler and assembler only if the G debug option is used Each symbol has exactly one basic or fundamental type but can have more than one derived type The type information is encoded as sets of bits in the field Bits 0 through 3 hold one of the fundamental type values given in Figure E 13 _ 266 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Type T NULL Type not assigned T VOID Void T CHAR Character T SHORT Short integer T INT Integer T LONG Long integer T FLOAT Floating point T DOUBLE Double word floating point T STRUCT Structure T UNION Union T ENUM Enumeration T
218. ional assembly directives CRE Print symbol cross reference DXL Expand DEFINE directive strings in listing HDR Generate listing headers IL Inhibit source listing LOC Print local labels in cross reference MC Print macro calls MD Print macro definitions MEX Print macro expansions MU Print memory utilization report NL Print conditional assembly and section nesting levels S Print symbol table U Print skipped conditional assembly lines Message Control These options control the types of assembler messages that are generated AE Check address expressions MSW Warn on memory space incompatibilities UR Flag unresolved references W Display warning messages Symbol Options These options deal with the handling of symbols by the assembler DEX Expand DEFINE symbols within quoted strings IC lgnore case in symbol names NS Support symbol scoping in nested sections SCL Scope structured control statement labels SCO Structured control statement labels to listing object file SO Write symbols to object file XLL Write local labels to object file XR Recognize XDEFed symbols without XREF 140 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Assembler Operation Miscellaneous options having to do with internal assembler operation cc Enable cycle counts CK Enable checksumming CM Preserve comment lines within macros CONST M
219. ions will be adjacent and non overlapping Assuming a code size of 2 for each section and a 16 bit word size the value for label START1 will be hex 100 and the value for will be hex 102 the corresponding load addresses will be C000 hex and C004 hex respectively The execut able output will be written to the file BOOTPROJ CLD DSP ASSEMBLER REFERENCE MANUAL 59 Chapter 4 SOFTWARE PROJECT MANAGEMENT c 4 A O n 60 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY 5 1 MACRO OPERATIONS Programming applications frequently involve the coding of a repeated pattern or group of instructions Some patterns contain variable entries which change for each repetition of the pattern Others are subject to conditional assembly for a given occurrence of the in struction group In either case macros provide a shorthand notation for handling these instruction patterns Having determined the iterated pattern the programmer can within the macro designate selected fields of any statement as variable Thereafter by invoking a macro the programmer can use the entire pattern as many times as needed substituting different parameters for the designated variable portions of the statements When the pattern is defined it is given a name T
220. irective If there had been no label the label column on the report would have been blank The section and overlay address columns are emp ty because there is no current section and no overlay in progress at this point in the source In the next to last line of the X memory report start address 400 there is an entry of type CODE with an overlay address This is the corresponding load entry for the first line in the P memory report and indicates that this is an overlay block Separate report records are generated as a result of the ORG directive in the source which has the form ORG P X 400 signifying an overlay In the X memory report the overlay address is P 0 and the R in parentheses means that the overlay address is the runtime address Conversely the first line in the P memory report shows an overlay address of X 400 the L in paren theses means that the overlay address is the load time address 238 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT Buns jej quiessy q n Z s uiod 9L 0 94 002 0 9 SsoJppe je HEJS 0 SseJppe sugs ejeq sessed 1449 144 Xejduioo julod Qi Ie O zv nu1 9J9 90 xo9 oDed 190 9215 1809 Sjuiod pelis 19591 80000000 01000000 00000000 01000000 00200000 00000000 81 ZI 91 91 vi
221. is is the last logical source statement and the starting address for the object module will be a label called ENTRY In the exam ple above ENTRY would have been a label defined in the section MAIN and declared as global with the XDEF directive 4 6 2 Relative Mode Implementation Using the assembler default relative mode each of the source files is assembled sepa rately For each section defined in the input files a separate set of location counters is maintained such that all memory spaces for each section begin at relative address zero The linker is invoked to combine the files and establish base addresses DSPLNK B M OXLI O OYLI 0 OYH FFCO OXH FFCO 1 OPL 1000 OPHE A000 MAIN IO FILTER The linker reads the command input and sets up base values for all counters specified on the command line In this example the X and Y low memory counters are initialized to ze ro whereas the X and Y high memory counters are set to FFCO hexadecimal The pro gram low and high memory counters are initialized similarly When the linker creates the executable file it reads the input files and sets the starting address for all sections relative to the values obtained from the command line As the MAIN object file is read the linker increments the section counters for all appropriate memory spaces After the MAIN object file is processed the object file is read The section named O contained an ORG directive indicating a switch to the low X data
222. it has a nonzero result The expression is false only if it has a result of 0 Because of the nature of the directive expression must be known on pass one no forward references al lowed IF directives can be nested to any level The ELSE directive will always refer to the nearest previous IF directive as will the ENDIF directive A label is not allowed with this directive See also ENDIF EXAMPLE IF LST gt 0 DUP LST Unwind LIST directive stack NOLIST ENDM ENDIF 128 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES INCLUDE Include Secondary File INCLUDE lt string gt lt lt string gt gt This directive is inserted into the source program at any point where a secondary file is to be included in the source input stream The string specifies the filename of the secondary file The filename must be compatible with the operating system and can include a direc tory specification If no extension is given for the filename a default extension of ASM is supplied The file is searched for first in the current directory unless the lt lt string gt gt syntax is used or in the directory specified in lt string gt If the file is not found and the option was used on the command line that invoked the assembler then the string specified with the I op tion is prefixed to lt string gt and that direc
223. ith a memory space attribute of X to the symbol A D PORT COMPUTE EQU LCV L is used to refer to the value and memory space attribute of the load location counter This value and memory space attribute would be assigned to the symbol COM PUTE 58 22 2 2 120 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES EXITM Exit Macro EXITM The EXITM directive will cause immediate termination of a macro expansion It is useful when used with the conditional assembly directive IF to terminate macro expansion when error conditions are detected A label is not allowed with this directive See also DUP DUPA DUPC MACRO EXAMPLE CALC MACRO XVAL YVAL IF XVAL lt 0 FAIL Macro parameter value out of range EXITM Exit macro ENDIF ENDM EE EE OO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 121 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES FAIL Programmer Generated Error FAIL lt str gt lt exp gt lt str gt lt exp gt lt str gt lt exp gt The FAIL directive will cause an error message to be output by the assembler The total error count will be incremented as with any other error The FAIL directive is normally used in conjunction with conditional assembly directives for exceptional condition check ing The assembly proceeds normally after the error has been printed An arbitrary num ber of strings and expressions in any order but
224. ithin a section have the symbol associated with them as their section name This serves to protect them from like named symbols elsewhere in the program By default a symbol defined inside any given section is private to that section unless the GLOBAL or LOCAL qualifier accompanies the SECTION directive Any code or data inside a section is considered an indivisible block with respect to relo cation Code or data associated with a section is independently relocatable within the memory space to which it is bound unless the STATIC qualifier follows the SECTION di rective on the instruction line Symbols within a section are generally distinct from other symbols used elsewhere in the source program even if the symbol name is the same This is true as long as the section name associated with each symbol is unique the symbol is not declared public XDEF GLOBAL and the GLOBAL or LOCAL qualifier is not used in the section declaration Symbols that are defined outside of a section are considered global symbols and have no explicit section name associated with them Global symbols may be referenced freely from inside or outside of any section as long as the global symbol name does not conflict with another symbol by the same name in a given section If the GLOBAL qualifier follows the section name in the SECTION directive then all symbols defined in the section until the next ENDSEC directive are considered global The effect is as if every
225. ithin anoth er See Chapter 3 for more information on string functions 2 4 SOURCE STATEMENT FORMAT Each source statement may include up to six fields eight for the 5 96000 separated by one or more spaces or tabs a label field an operation field an operand field an addi tional opcode and operand field for the DSP96000 up to two data transfer fields and a comment field Only fields preceding the comment field are considered significant to the 58 2 42 22 2 14 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS assembler the comment field is ignored For example the following source statement shows all eight possible fields for the DSP96000 ENT FMPY 08 06 02 FADD S 03 00 X RO D4 S 02 5 5 Comment field X field Operand 2 Opcode 2 Operand Opcode Label In general the contents of each field other than the comment field cannot contain embed ded whitespace characters since these characters are used as field delimiters Two ex ceptions are blanks and tabs in quoted strings and the syntax of structured control statements see Chapter 7 2 4 1 Label Field The label field occurs as the first field of a source statement and can take one of the fol lowing forms 1 A space or tab as the first character on a line ordinarily indicates that the label field is empty and that the line has no label 2 Analphabetic character as the first character indi
226. ition codes These tests may be used in an op erand comparison expression within a structured control statement Chapter 7 CC carry clear lt CS gt carry set lt EC gt extension clear lt EQ gt equal lt ES gt extension set lt GE gt greater or equal lt GT gt greater than HS higher or same lt LC gt limit clear lt LE gt less or equal lt LO gt lower lt LS gt limit set DSP ASSEMBLER REFERENCE MANUAL 293 Appendix F DEVICE DEPENDENT INFORMATION LT less than MI minus NE not equal NN not normalized NR normalized lt PL gt plus 294 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 3 DSP96000 INFORMATION The Motorola DSP96000 refers to a family of dual port IEEE floating point programmable CMOS processors The DSP960002 supports IEEE 754 single precision and single ex tended precision floating point and 32 bit signed and unsigned fixed point arithmetic F 3 1 Instruction Set Summary DSP96000 instructions can be grouped by function into six types Arithmetic instructions Logical instructions Bit manipulation instructions Loop instructions Move instructions Program control instructions amp F 3 1 1 Arithmetic Instructions The DSP96000 instructions used for arithmetic operations are ABS Absolute value ADD Add ADDC Add with car
227. its of the left operand by the right More information on these special operators and their operands is given below Here is another example of data expression generation JCLR 1 For this conditional jump the assembler produces the following object code 02A00481 amp 0 lt lt 8 lt lt 12 I LOC 1 8 amp 0 lt lt 8 lt lt 12 LABEL 040 The first expression is evaluated such that the relative address LOC resolved at link time is shifted and masked into the middle eight bits of the base instruction word 02A00481 The expression could have been more complex if the bit number was an external refer ence The relative value of the symbol LABEL occupies the second instruction word E 5 2 Data Expression Interpretation Object file data expressions are similar to standard assembler expressions which gener ally follow the rules of algebra and boolean arithmetic They are written using infix nota tion in conjunction with unary and binary operators and parentheses There are also extensions to the usual set of assembler arithmetic and grouping operators These are control constructs that assist the linker in determining the size type and characteristics of an expression operand 2 2 284 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 5 2 1 User Expression The curly braces f delimit a user expression within a data expression A user ex
228. ive expression string long int secnt Logical section count long int ctrcnt Counter count long int relocnt Relocation entry count long int Inocnt Line number entry count long int bufcnt Buffer count long int ovlcnt Overlay count long int majver Major version number long int minver Minor version number long int revno Revision number long int optflags Optional header flags Figure E 4 Motorola DSP Optional Link Header Format Figure E 5 illustrates the runtime optional header This header is similar to the standard COFF a out header but there are differences The magic number in this header is not the same as the magic number in the file header this magic number is used indicate the file type to a host operating system The magic number and version stamp fields currently are not used by the Motorola DSP tools and are set to zero The text size field gives the size of all text type data executable code in the object file The data size field holds a count of all initialized data apart from code in the file The uninitialized data size field is not used and is set to zero DI LLLAAAAAL ALLLLLOLLULAAA AALLLLLLLLLG TAUAL GCLLLLLLInuLi OU1IT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 257 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF The program entry field represents the address given in the assembler END directive The text start and data start values contain the low address
229. iven each character in the string is stored in a word whose lower seven bits represent the ASCII value of the character EXAMPLE ABCD 414243 440000 See also BSC DCB EXAMPLE TABLE DC 1426 253 52662 ABCD CHARS DC A B C D 102 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DCB Define Constant Byte lt label gt DCB lt gt lt gt lt gt The DCB directive allocates and initializes a byte of memory for each arg argument arg may be a byte integer constant a single or multiple character string constant a symbol or a byte expression The DCB directive may have one or more arguments sep arated by commas Multiple arguments are stored in successive byte locations If multi ple arguments are present one or more of them can be null two adjacent commas in which case the corresponding byte location will be filled with zeros lt label gt if present will be assigned the value of the runtime location counter at the start of the directive processing Integer arguments are stored as is but must be byte values e g within the range 0 255 floating point numbers are not allowed Single and multiple character strings are handled in the following manner 1 Single character strings are stored in a word whose lower seven bits repre sent the ASCII value of the character EXAMPLE 000052 2 Multiple cha
230. l assembly directive UR Generate a warning at assembly time for each unresolved external reference This option works only in relocatable mode default reset Print all warning messages WEX Add warning count to exit status Ordinarily the assembler exits with a count of errors This option causes the count of warnings to be added to the error count XLL Write underscore local labels to object file This is primarily used to aid de bugging This option if used must be specified before the first symbol in the source program is defined XR Causes XDEFed symbols to be recognized within other sections without be ing XREFed This option if used must be specified before the first symbol in the source program is encountered EXAMPLE OPT CEX MEX Turn on DC and macro expansions OPT CRE MU Cross reference memory utilization 58 2 2 2 146 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ORG Initialize Memory Space and Location Counters ORG rmms ric rmp expt1 gt lt Ims gt lt llc gt lt Imp gt lt exp2 gt ORG lt rms gt lt rmp gt lt rce gt lt exp1 gt lt Ims gt lt Imp gt lt lce gt lt exp2 gt The ORG directive is used to specify addresses and to indicate memory space and map ping changes It also can designate an implicit counter mode switch in the assembler and serves as a mechanism for initiating overlays
231. label X and Y data field widths M O l MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 133 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES MACLIB Macro Library MACLIB lt pathname gt This directive is used to specify the lt pathname gt as defined by the operating system of a directory that contains macro definitions Each macro definition must be in a separate file and the file must be named the same as the macro with the extension ASM added For example BLOCKMV ASM would be a file that contained the definition of the macro called BLOCKMV If the assembler encounters a directive in the operation field that is not contained in the directive or mnemonic tables the directory specified by pathname will be searched for a file of the unknown name with the ASM extension added If such a file is found the current source line will be saved and the file will be opened for input as an INCLUDE file When the end of the file is encountered the source line is restored and processing is re sumed Because the source line is restored the processed file must have a macro defi nition of the unknown directive name or else an error will result when the source line is restored and processed However the processed file is not limited to macro definitions and can include any legal source code statements Multiple MACLIB directives may be given in which case the asse
232. lags field is a set of bit flags which convey status information about the object file It is used primarily by linkers debuggers and other loader software to determine whether the file is valid for a particular requested operation The individual bit flags are shown in Figure E 3 Mnemonic Flag Meaning F RELFLG 0000001 Relocation information stripped from file F EXEC 0000002 File is executable no unresolved external references F LNNO 0000004 Line numbers stripped from file F LSYMS 0000010 Local symbols stripped from file 0010000 File produced by compiler Motorola DSP only Figure E 3 File Header Flags E 3 2 Optional Header The COFF optional header ordinarily is used to hold system dependent or runtime infor mation This allows different operating environments to store data that only that environ ment uses without forcing all COFF files to save space for that information General utility programs can be made to work properly with any common object file This is done by seeking past the optional header using the f_opthdr size field in the file header record The optional header in a Motorola DSP object file may contain two distinct types of infor mation depending upon how the file was generated If the file is a relocatable object file it will have an optional header containing linker information If the file is an absolute object file it will have an optional header containing runtime informati
233. le An individual source file contained more than 2 31 lines of code Too many sections in module There is a limit of 255 discrete sections in a given source file Unrecognized transformation mnemonic The lookup of an FADD or FSUB secondary operand failed This is an internal error that should be reported to Motorola M mP l MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 233 Appendix ASSEMBLER MESSAGES _______ ___ ____ ____ _________ __ ________________ 234 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix D ASSEMBLER LISTING FILE FORMAT D 1 INTRODUCTION The assembler always produces a source listing file unless the command line option OIL inhibit listing is specified See Chapter 1 RUNNING THE ASSEMBLER and the OPT directive in Chapter 6 for more information on command line and listing options If the L command line option is given the listing goes to the file named as the option argument if no argument is specified the listing file takes the name of the first source file on the com mand line and changes the extension to LST see Chapter 1 If the L option is omitted the listing is routed to the standard output which in most cases is the console or user ter minal by default Most of the operating systems which host the assembler support I O re direction so that the standard output may be redirected to an arbitrary destination printer file null dev
234. le is explicitly routed to standard output while the listing file is allowed to default to the same output stream For more details on assembler operation in a particular machine environment see Appen dix G HOST DEPENDENT INFORMATION ZI 8 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 1 MOTOROLA DSP ASSEMBLER 1 5 ASSEMBLER PROCESSING The Motorola DSP assembler is a two pass assembler During the first pass the source program is read to build the symbol and macro tables During the second pass the object file is generated assembled with reference to the tables created during pass one It is also during the second pass that the source program listing is produced Each source statement is processed completely before the next source statement is read As each line is read in any translations specified by the DEFINE directive are applied Each statement is then processed and the assembler examines the label operation code operand and data transfer fields The macro definition table is scanned for a match with the operation code If there is no match the operation code and directive tables are scanned for a match with a known opcode Any errors detected by the assembler are displayed before the actual line containing the error is printed Errors and warnings are accumulated and a total number of errors and warnings is printed at the end of the source listing If no source listing is produced error messages are still displayed
235. llowed on the same line as the directive Structured programming directives are dis cussed separately in Chapter 7 ____ ______ _ _________ _______ DSP ASSEMBLER REFERENCE MANUAL 75 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Comment Delimiter Character Any number of characters preceded by a semicolon but not part of a literal string is considered a comment Comments are not significant to the assembler but they can be used to document the source program Comments will be reproduced in the assembler output listing Comments are normally preserved in macro definitions but this option can be turned off see the OPT directive this chapter Comments can occupy an entire line or can be placed after the last assembler significant field in a source statement A comment starting in the first column of the source file will be aligned with the label field in the listing file Otherwise the comment will be shifted right and aligned with the comment field in the listing file EXAMPLE THIS COMMENT BEGINS IN COLUMN 1 OF THE SOURCE FILE LOOP JSR COMPUTE THIS IS A TRAILING COMMENT IHESE TWO COMMENTS ARE PRECEDED BYATAB IN THE SOURCE FILE 58 2 2 12 ____________ e 76 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Unreported Comment Delimiter Characters Unreported comments are any number of characters preceded by tw
236. lobal symbols may be refer enced freely from inside or outside of any section as long as the global symbol name does not conflict with another symbol by the same name in a given section Consider the following example SYM1 EQU 1 SYM2 EQU 2 SECTION EXAMPLE SYM1 EQU 3 MOVE SYM1 RO MOVE SYM2 R1 ENDSEC MOVE SYM1 R2 SYM1 and SYM2 are global symbols initially defined outside of any section Then in sec tion EXAMPLE another instance of SYM1 is defined with a different value Because SYM1 was redefined inside the section the value moved to RO will be Since SYM2 is a global symbol the value moved to R1 will be 2 The last move to R2 is outside of any section and thus the global instance of SYM1 is used the value moved to R2 is 1 4 3 4 Sections and Symbols Symbols may be shared among sections through use of the XDEF and XREF directives The XDEF directive instructs the assembler that certain symbol definitions that occur within the current section are to be accessible by other sections XDEF lt symbol gt lt symbol gt lt symbol gt The XREF directive instructs the assembler that all references to lt symbol gt within the cur rent section are references to a symbol that was declared public within another section with the XDEF directive XREF lt symbol gt lt symbol gt lt symbol gt 40 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT XDEFed symbols by default are r
237. lock O1SIZE is computed by subtracting the START label value from the END label address Assume for purposes of discussion that there are other files containing similar overlay code with names OVER2 ASM and OVER3 ASM AAZZALAAANTBAAAA77 C AALAALLLLLLUUCUC C LALLEALLAALAA ALALALALRDULLCET 54 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 7 4 Absolute Mode Implementation In order to avoid binding addresses within the individual overlay modules the programmer could devise a preamble file called OVLPROJ ASM which sets the appropriate counters and establishes the overlay base address Note that the following code assumes a DSP96000 but similar instructions would apply for other target processors SECTION OVLPROJECT XDEF OVLBASE XREF OVL1 O1SIZE XREF OVL2 O2SIZE XREF OVLS OSSIZE ORG XE 100 set absolute base for overlay sections ORG PI 200 set absolute base address for overlay OVLBASE DS 400 reserve space for overlay area MOVEOV1 code to move first overlay segment MOVE OVL1 RO load overlay code address MOVE OVLBASE R1 load overlay base address MOVE 01SIZE D1 M load overlay code size DO D1 M ENDLOOP loop to move data words into P memory MOVE X RO D0 M get word of overlay from data memory MOVE DO M P R1 store word of overlay into P memory _ENDLOOP ENDSEC The overlay base address OVLBASE is made global with the XDEF statement The over lay segments
238. longer than eight characters In this case the convention used for long symbol names is followed where if the least sig nificant four bytes of the section name field contain zeroes the name is in the symbol table at the offset given by the most significant four bytes of the name field See section E 3 4 1 for more information on the handling of long symbol names The physical address is the address where the section text or data will reside in memory The address value depends upon whether the section is absolute or relocatable If the section is absolute then the physical address is the actual address where the section will be loaded into memory If the section is relocatable then the physical address is an offset Vir LLLLLLLLLLLLLAALLLAL AZAZAZ2ZZ9CLCCLULLLLL ELCOLAGZ A LtWALLLALLLZIT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 259 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF from the start of the logical section implicit or defined by the SECTION directive in which the section is defined In most cases the virtual address is the same as the physical address However for block data sections in Motorola DSP object files the virtual address field holds the repeat count for the single raw data value associated with this section For example if the assembly language source file included a directive of the form BSC 400 FFFF the s vaddr field would contain the value 400 the 6 size field would be 1 or 2 if in L memory and the single
239. lso there are functions for easily converting values expressed in decimal float ing point to their binary or fractional equivalents This conversion is done automatically for immediate instruction operands and arguments to the DC directive see Chapter 6 See Chapter 3 for more information on assembler expressions operators and built in functions The register set of the Motorola digital signal processors allows for efficient use of modulo and reverse carry buffers for FFT applications The assembler supports this architecture by providing several special purpose directives for allocating circular buffers The BADDR BUFFER DSM and DSR directives automatically advance the program counter to the next appropriate base address given the buffer size and perform various boundary and magnitude checks to insure that the buffer is valid The BSM and BSR provide for automatic alignment and block initialization of DSP buffers Since a buffer allocated in this fashion can cause alignment gaps in memory the MU option see the OPT directive Chapter 6 may be used to generate a full memory utilization report See Chapter 6 for more information on assembler directives and options EE EEE OOOO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 11 Chapter 1 MOTOROLA DSP ASSEMBLER _ 12 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS 2 1 INPUT FILE FORMAT Programs written in assembly language con
240. ly IF direc tive but can be used in any expression 3 6 5 Bitwise operators AND amp Integer only OR Integer only exclusive OR Integer only The bitwise AND operator yields the bitwise AND function of its operands The bitwise OR operator yields the bitwise OR function of its operands The bitwise exclusive OR operator yields the bitwise exclusive OR function of its oper ands Bitwise operators cannot be applied to floating point operands ee 24 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS 3 6 6 Logical operators Logical AND amp amp Logical OR The logical AND operator returns an integer 1 if both of its operands nonzero wise it returns an integer O The logical OR operator returns an integer 1 if either of its operands is nonzero otherwise it returns an integer O The types of the operands may be either integer or floating point the memory space at tribute of the result is None Logical operators are primarily intended for use with the con ditional assembly IF directive but can be used in any expression 3 7 OPERATOR PRECEDENCE Expressions are evaluated with the following operator precedence parenthetical expression innermost first unary plus unary minus one s complement logical negation multiplication division mod addition subtraction shift relational operators less less or equal greater greater or equal relational operators
241. mal The file START ASM contains an END directive which indicates the program start address after loading 4 7 2 gt Relative Mode Implementation In relative mode each of the overlay files is assembled separately to create individual ob ject files The object files are combined to build a single executable file A preamble file OVLPROJ ASM containing overlay management code might appear as follows Note that this code assumes a DSP96000 but similar instructions would apply for other target pro cessors SECTION OVLPROJECT XDEF OVLBASE XREF OVL1 O1SIZE XREF OVL2 O2SIZE XREF OVL3 OSSIZE ORG PI set base address for overlay MOVEOV1 code to move first overlay segment MOVE OVL1 RO load overlay code address MOVE OVLBASE R1 load overlay base address MOVE 01SIZE D1 M load overlay code size DO D1 M ENDLOOP loop to move data words into P memory MOVE X RO D0 M get word of overlay from data memory MOVE DO M P R1 store one word of overlay into P memory _ENDLOOP OVLBASE DS 400 reserve space for overlay area ENDSEC Note that the ORG to P space does not specify an absolute address In order to obtain the same result from these files as in an absolute mode implementation the following link er command line would be used DSPLNK B OXE 100 OPI 200 OVLPROJ OVER1 OVER2 OVER3 The linker scans the command line and sets the base addresses for X and P memory Here the X default counter is set to hex 100 and mapped to exte
242. mantissa and an implied binary point 3 5 CONSTANTS Constants represent quantities of data that do not vary in value during the execution of a program 3 5 1 Numeric Constants Numeric constants can be in one of three bases Binary Binary constants consist of a percent sign 96 followed by a string of binary digits 0 1 Example 9611010 Hexadecimal Hexadecimal constants consist of a dollar sign followed by a string of hexadecimal digits 0 9 A F a f Example 12FF 12ff Decimal Decimal constants can be either floating point or integer Integer decimal constants consist of a string of decimal 0 9 digits op tionally preceded by a grave accent Floating point constants are indicated either by a preceding following or included decimal point or by the presence of an upper or lower case E followed by the exponent Example 12345 integer 6E10 floating point DSP ASSEMBLER REFERENCE MANUAL 21 Chapter 3 EXPRESSIONS 6 floating point 2 7e2 floating point A constant may be written without a leading radix indicator if the input radix is changed using the RADIX directive For example a hexadecimal constant may be written without the leading dollar sign if the input radix is set to16 assuming an initial radix of 10 The default radix is10 See Chapter 6 on the RADIX directive for more information 3 5 2 String Constants String constants that are used in expressio
243. mbler will search each directory in the order in which it is encountered A label is not allowed with this directive See also INCLUDE EXAMPLE macros mymacs IBM PC example fftlib UNIX example ____ ____ _ ___ ______________ ________________ ___ 134 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES MACRO Macro Definition label MACRO lt dummy argument list macro definition statements ENDM The dummy argument list has the form lt dumarg gt lt dumarg gt lt dumarg gt The required label is the symbol by which the macro will be called If the macro is named the same as an existing assembler directive or mnemonic a warning will be issued This warning can be avoided with the RDIRECT directive The definition of a macro consists of three parts the header which assigns a name to the macro and defines the dummy arguments the body which consists of prototype or skel eton source statements and the terminator The header is the MACRO directive its label and the dummy argument list The body contains the pattern of standard source state ments The terminator is the ENDM directive The dummy arguments are symbolic names that the macro processor will replace with ar guments when the macro is expanded called Each dummy argument must obey the same rules as symbol names Dummy argument names that are preceded by an
244. mbol AREG and 1 is the value of BREG The resulting intermediate expansion would be MOVE RW9 X0 MOVE RM R0 MOVE XO R 1 Next the macro processor would apply the concatenation operator Y and the resulting expansion as it would appear on the source listing would be MOVE 0 0 MOVE R1 RO MOVE XO R1 I O 66 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY 5 5 3 Return hex value operator 96 The percent sign 96 is similar to the standard return value operator except that it returns the hexadecimal value of a symbol When the macro processor encounters this operator the lt symbol gt sequence is converted to a character string representing the hexadecimal value of the symbol Consider the following macro definition GEN LAB MACRO LAB VAL STMT LAB VAL STMT ENDM This macro generates a label consisting of the concatenation of the label prefix argument and a value that is interpreted as hexadecimal If this macro were called as follows NUM SET 10 GEN_LAB HEX NUM NOP the macro processor would first substitute the characters HEX for LAB then it would re place VAL with the character A since A is the hexadecimal representation for the dec imal integer 10 Next the macro processor would apply the concatenation operator Finally the string NOP would be substituted for the STMT argument The resulting ex pansion as it would
245. mbol name field contains the special comment string cmt The n address field points to the com ment text as an offset into the string table Comments generated automatically by the as sembler or via the IDENT directive have an n scnum field with value of 1 Comments produced with the COBJ directive generally have the section number of the COFF section in which they reside The type and storage class fields are both zero E 3 5 String Table Symbol and section names longer than seven characters and comment text are stored contiguously in the string table with each string delimited by a zero byte The first four bytes represent the size of the string table in bytes offsets into the string table therefore are always greater than or equal to 4 An empty string table has a length field with value zero E 4 DIFFERENCES IN DSP OBJECT FORMAT AND STANDARD COFF Motorola DSP COFF is substantially the same as generic COFF and usage of format el ements is similar However the original COFF specification did not envision aspects of machine architecture which the Motorola DSP family possesses Moreover standard COFF encompasses a file format which is quite adaptable among host processors but is not necessarily portable among those hosts Itis straightforward enough to adapt to a new host machine but the intent is that the derived host format will be recognized and executed only on that target host For Motorola DSP COFF the format had to be ext
246. memory counter Recall that the assembler generated relocatable code for the O section source such that the low X data memory counter begins at zero The linker adjusts the low X memory counter associated with section O to reflect any previous data generation performed in low X memory e g in MAIN The FILTER module is linked in a similar fashion Another way for specifying base addresses instead of lengthy command line options is through a memory control file The memory control file allows the programmer to indi cate memory space starting addresses analogously to the command line approach In ad dition the memory control file offers finer control over placement of sections in memory See the Motorola DSP Linker Librarian Reference Manual for more information on the memory control file The preceding examples described two methods for organizing a software project Refer to the descriptions of the ORG and SECTION directives in Chapter 6 for a more detailed discussion See also the Motorola DSP Linker Librarian Reference Manual for more in _ DSP ASSEMBLER REFERENCE MANUAL 53 Chapter 4 SOFTWARE PROJECT MANAGEMENT formation on relocation and linking One other assembler directive that should be men tioned although not shown in the previous example is the MACLIB directive which allows sections to share a common macro library The MACLIB directive is
247. memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X L P rogram or N one only N is fully compatible with all other attributes In this case two operands were evaluated with different memory space attributes neither of which was N Expression value outside fractional domain The expected fractional value was not within the range 1 0 lt m lt 1 Extra dimensions ignored A source level debug DIM directive contained more than four arguments specify ing the dimensions of an array DSP ASSEMBLER REFERENCE MANUAL 193 Appendix ASSEMBLER MESSAGES FMPY suffix ignored using secondary opcode suffix The single or extended precision suffix on a dual opcode instruction has been ig nored The precision is taken from the suffix on the secondary opcode Immediate value too large to use short long substituted An immediate data value being forced short is too large to fit in the space allocated for a short immediate value The assembler substitutes long immediate address ing Improper nesting of DO loops The end address of a subordinate nested DO loop is greater than or equal to the end address of the loop enclosing it The end address of a nested DO instruction must be less than the end address of the
248. ment lines following and rLLLLrLuOLL uLLLLLLLULLLLO LLL ____________________________ MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 235 Appendix D ASSEMBLER LISTING FILE FORMAT all lines have been shifted right to make room for line numbers and constant or data value displays as for example with the group of equates beginning on line 12 On line 19 an INCLUDE directive causes the source input to be switched to a file named SIN16 ASM in the FFTLIB subdirectory This usage of INCLUDE is provided for illustra tive purposes since the previous MACLIB declaration makes it unnecessary By line 20 the input stream has changed to the new file the first line of the new file is the definition line for a macro that will initialize the FFT sine and cosine tables in X and Y memory No tice the lower case m to the right of the line number on line 21 and following This indi cates that a macro definition is in progress the lines are not assembled but are retained for macro expansion later At line 41 the ENDM directive is encountered as well as the end of the included macro file The source input reverts to the original file the next line of which is an invocation of the macro SIN16 just defined Since the MEX option was not specified the macro ex pansion does not appear in the listing However on the next non empty source line the OPT directive is used again to turn on printing of macro expansions and turn off the dis play of macro def
249. mes it is desirable to concatenate the argument characters with other characters If an argument is to be concatenated in front of or be hind some other symbol characters then it must be followed by or preceded by the back slash respectively EXAMPLE Suppose the source input file contained the following macro definition SWAP REG MACRO REG1 REG2_ swap REG1 REG2 using D4 L as temp MOVE R REG1 D4 L MOVE R REG2 R REG1 MOVE D4 L R REG2 ENDM EEE 78 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES The concatenation operator Y indicates to the macro processor that the substitution char acters for the dummy arguments are to be concatenated in both cases with the character If this macro were called with the following statement SWAP REG 0 1 the resulting expansion would be MOVE RO0 D4 L MOVE R1 RO MOVE DA L R1 UC L MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 79 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Return Value of Symbol Character The lt symbol gt sequence when used in macro definitions will be replaced by an ASCII string representing the value of symbol This operator may be used in association with the backslash Y operator The value of symbol must be an integer not floating point EXAMPLE Consider the following macro definition SWAP SYM MACRO REG1 R
250. my arguments are to be concatenated in both cases with the character R The resulting expansion of this macro call would be MOVE 0 0 MOVE R1 RO MOVE XO R1 I CLALLALALZZLLALLLLLLLLU ULLLLLILCPALLLLLLLLLLULALLLLU LLEGOLGLLLLLLLLLU T MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 65 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY 5 5 2 Return value operator Another macro definition operator is the question mark that returns the value of a sym bol When the macro processor encounters this operator the lt symbol gt sequence is converted to a character string representing the decimal value of the symbol For ex ample consider the following modification of the SWAP REG macro described above SWAP SYM MACRO REG1 REG2 swap REG1 REG2 using as temp MOVE R REG1 X0 MOVE R REG2 R REG1 MOVE XO R REG2 ENDM If the source file contained the following SET statements and macro call AREG SET 0 BREG SET 1 SWAP SYM AREG BREG then the sequence of events would be as follows the macro processor would first substi tute the characters AREG for each occurrence of REG1 and BREG for each occurrence of REG2 For discussion purposes this would never appear the source listing the intermediate macro expansion would be MOVE RVAREG XO MOVE RVBREG R AREG MOVE XO R BREG The macro processor would then replace AREG with the character 0 and BREG with the character 1 since 0 is the value of the sy
251. n Cannot encode branch instruction Cannot encode jump instruction The correspondence between the source opcode mnemonic and the internal op code type has been corrupted This is an internal error that should be reported to Motorola Cannot seek to start of line number entries Cannot seek to start of object data Cannot seek to start of object file Cannot seek to start of relocation entries Cannot seek to start of section headers Cannot seek to start of string table Cannot seek to start of symbol table An I O error occurred which prevented the assembler from positioning correctly in the output object file Cannot write file header to object file Cannot write line number entries to object file Cannot write optional header to object file Cannot write relocation entries to object file Cannot write section headers to object file Cannot write string table to object file Cannot write symbols to object file An error occurred which prevented the assembler from writing data to the out put object file OOOO 230 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Cannot write control string to listing file Cannot write left margin to listing file Cannot write new line to listing file Cannot write new page to listing file Cannot write page header to listing file Cannot write string to listing file An I O error occurred which prevented the assembler from writing data to the out put listing file Compar
252. n One ex ample of this might be a program located in an external EPROM that will be transferred into external program RAM before it is run The transfer of code data from one memory space address to a different memory space address is called an overlay When the object code for a part of the program is generated that later will be used as an overlay the load memory space and load address do not correspond to the memory space and address where the program will be run The memory space and address loca tion where the code data will be located when the program is run are referred to as the _ DSP ASSEMBLER REFERENCE MANUAL 9 Chapter 1 MOTOROLA DSP ASSEMBLER runtime memory space and runtime address respectively If the assembler only used the load address to assign values to labels then the program would not contain the cor rect label references when it was transferred to the runtime memory space and the run time address During the assembly process the assembler uses location counters to record the ad dresses associated with the object code In order to facilitate the generation of object code for overlays the assembler maintains two different location counters the load loca tion counter which determines the address into which the object code will be loaded and the runtime location counter which determines the address assig
253. n ORG directive dealing with the load memory space and counter is not specified then the assembler will assume that the load memory space and load location counter are the same as the runtime memory space and runtime loca tion counter In this case object code is being assembled to be loaded into the address and memory space where it will be when the program is run and is not an overlay If the load memory space and counter are given in the operand field then the assembler always generates code for an overlay Whether the overlay is absolute or relocatable de pends upon the current operating mode of the assembler and whether the load counter value is an absolute or relative expression If the assembler is running in absolute mode or if the load counter expression is absolute then the overlay is absolute If the assembler MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 47 Chapter 4 SOFTWARE PROJECT MANAGEMENT is in relative mode and the load counter expression is relative the overlay is relocatable Runtime relocatable overlay code is addressed relative to the location given in the runtime location counter expression This expression if relative may not refer to another overlay block See section 1 6 for more information on location counters and overlays The values and memory space attributes of both the load and runtime location counters can be accessed with the LCV function see Section 3 8 This is particularly useful when assigning th
254. n abso lute integer greater than zero and cannot contain any forward references symbols that have not yet been defined If a Modulo buffer is specified the expression must fall within the range 2 lt lt expression gt lt m where mis the maximum address of the target DSP If a Reverse carry buffer is designated and expression is not a power of two a warning will be issued A label is not allowed with this directive See also BSM BSB BUFFER DSM DSR EXAMPLE ORG X 100 M BUF BADDR 24 CIRCULAR BUFFER MOD 24 JT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 95 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES BSB Block Storage Bit Reverse lt label gt BSB lt expression gt lt expression gt The BSB directive causes the assembler to allocate and initialize a block of words for a reverse carry buffer The number of words in the block is given by the first expression which must evaluate to an absolute integer Each word is assigned the initial value of the second expression If there is no second expression an initial value of zero is assumed If the runtime location counter is not zero this directive first advances the runtime location counter to a base address that is a multiple of 2 where 2 is greater than or equal to the value of the first expression An error will occur if the first expression contains symbols that a
255. n just beyond the end of the buffer when the ENDBUF directive is en countered A label is not allowed with this directive See also BUFFER EXAMPLE ORG X 100 BUF BUFFER R 64 uninitialized reverse carry buffer ENDBUF EEE 116 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ENDIF End of Conditional Assembly ENDIF The ENDIF directive is used to signify the end of the current level of conditional assembly Conditional assembly directives can be nested to any level but the ENDIF directive al ways refers to the most previous IF directive A label is not allowed with this directive See also IF EXAMPLE IF REL SAVEPC SET 4 Save current program counter ENDIF ___ _______ _ ________ _______ __ ___ DSP ASSEMBLER REFERENCE MANUAL 117 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ENDM End of Macro Definition ENDM Every MACRO DUP DUPA and DUPC directive must be terminated by an ENDM direc tive A label is not allowed with this directive See also DUP DUPA DUPC MACRO EXAMPLE SWAP SYM MACRO REG1 REG REG1 REG2 using D4 L as temp MOVE R REG1 D4 L MOVE R REG2 R REG1 MOVE D4 L R REG2 ENDM EEE 118 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES ENDSEC End Section ENDSEC Every SECTION directive must be terminated by an ENDSEC directive A la
256. nd of file missing COMMENT delimiter The second occurrence of the delimiter character in a COMMENT directive was never found Unexpected end of file missing ENDBUF A BUFFER directive was encountered without a closing ENDBUF directive Unexpected end of file missing ENDIF An IF directive was encountered without a closing ENDIF directive Unexpected end of file missing ENDM A macro definition was started using the MACRO directive but the end of the source file was encountered before a closing ENDM directive was found Unexpected end of file missing ENDSEC A SECTION directive was found without a closing ENDSEC directive Unknown math error A transcendental math function returned an error that could not be classified as out of range or outside the function domain 228 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Unrecognized mnemonic A symbol in the assembler opcode field was not a defined macro an instruction mnemonic or a directive Unrecognized secondary mnemonic A symbol in the assembler secondary opcode field was not one of the instructions FADD FSUB or FADDSUB UNTIL without associated REPEAT directive An UNTIL directive was encountered before matching REPEAT structured con trol statement Value argument larger than machine word size The value parameter of a FLD function has a value larger than can fit in the tar get machine word Width argument greater t
257. nd to zero INTU Convert floating point to unsigned integer INTURZ Convert floating point to unsigned integer with round to zero JOIN Join two 16 bit integers JOINB Join two 8 bit integers MPYS Signed multiply MPYU Unsigned multiply NEG Negate NEGC Negate with carry RND Round accumulator SETW Set operand SPLIT Extract 16 bit integer SPLITB Extract 8 bit integer SUB Subtract SUBC Subtract with TST Test Instruction allows parallel data move e a a AAA LAN 296 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix F DEVICE DEPENDENT INFORMATION F 3 1 2 Logical Instructions The DSP96000 instructions used for logical operations are AND Logical AND ANDC Logical AND with complement ANDI AND Immediate to control register EOR Logical exclusive OR LSL Logical shift left LSR Logical shift right NOT Logical complement OR Logical inclusive ORC Logical inclusive OR with complement ORI OR immediate with control register ROL Rotate left ROL Rotate right F 3 1 3 Bit Manipulation Instructions The DSP96000 instructions used for bit manipulation are BCHG Bit test and change BCLR Bit test and clear BSET Bit test and set BTST Bit test on memory F 3 1 4 Instructions The DSP96000 instructions used for loop operations are DO Start hardware loop DOR Start PC relative hardware loop ENDDO
258. nditional directives can also be used within a macro definition to ensure at expansion time that arguments fall within a range of allowable values In this way macros become self checking and can generate error messages to any desired level of detail The conditional assembly directive IF has the following form IF expression ELSE the ELSE directive is optional ENDIF A section of a program that is to be conditionally assembled must be bounded by an IF ENDIF directive pair If the optional ELSE directive is not present then the source state ments following the IF directive and up to the next ENDIF directive will be included as part of the source file being assembled only if the expression had a nonzero result If the expression has a value of zero the source file will be assembled as if those statements between the IF and the ENDIF directives were never encountered If the ELSE directive is present and expression has a nonzero result then the statements between the IF and ELSE directives will be assembled and the statements between the ELSE and ENDIF directives will be skipped Alternatively if expression has a value of zero then MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 69 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY the statements between the IF and ELSE directives will be skipped and the statements between the ELSE and ENDIF directives will be assembled
259. ned to labels In ad dition the assembler keeps track of the load memory space which is the memory space into which the object code will be loaded and the runtime memory space which is the memory space to which an overlay will be transferred and the memory space attribute that will be assigned to labels See Chapter 4 SOFTWARE PROJECT MANAGEMENT for a practical discussion of the use of memory spaces and location counters The Motorola digital signal processors are capable of performing operations on modulo and reverse carry buffers two data structures useful in digital signal processing applica tions The DSP assembler provides directives for establishing buffer base addresses al locating buffer space and initializing buffer contents For a buffer to be located properly in memory the lower bits of the starting address which encompass one less than the buffer size must be zero For example the lowest address greater than zero at which a buffer of size 32 may be located is 32 20 hexadecimal More generally the buffer base address must be a multiple of 2 where 2 is greater than or equal to the size of the buffer Buffers can be allocated manually or by using the assembler buffer directives see Chapter 6 The assembler operates in either absolute or relative mode depending on the presence of the command line A option In relative mode the assembler creates relocatable object files These files can be combined and relocated using the M
260. ng If the value of an absolute ad dress is known to the assembler on pass one or the FORCE SHORT directive is active then the assembler will always pick the shortest form of addressing consistent with the instruction format If the absolute address is not known to the assembler on pass one that is the address is a forward or external reference then the assembler will pick the long form of addressing by default If this is not desired then the short absolute form of addressing can be forced by preceding the absolute address by the short addressing mode force operator See also FORCE EXAMPLE Since the symbol DATAST is a forward reference in the following sequence of source lines the assembler would pick the long absolute form of addressing by default MOVE DO L Y DATAST DATAST EQU Y 23 Because the long absolute addressing mode would cause the instruction to be two words long instead of one word for the short absolute addressing mode it would be desirable to force the short absolute addressing mode as shown below MOVE DO L Y lt DATAST DATAST EQU Y 23 58 4 __ ___ 42 90 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES gt Long Addressing Mode Force Operator Many DSP instructions allow a long form of addressing If the value of an absolute ad dress is known to the assembler on pass one then the assembler will always pick the shortest form of addressin
261. nnot be found or the operating system limit on open files has been exceeded Cannot repeat this instruction Cannot repeat two word instruction The REP instruction cannot be used to repeat two word instructions or instructions that change program flow Instructions that cannot be repeated include DO Jcc JCLR JMP JSET JScc JSCLR JSR JSSET REP RTI RTS and SWI CONST option must be used before any label This option which prevents EQU symbols from being exported to the object file must be given before any label is encountered in the source file DI Eti LLUV DAC LCLhPAAA PADALLALl LLLLLAAIAIA ADLLLALALALALLLZAZ QR SOIT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 201 Appendix ASSEMBLER MESSAGES Contents of assigned register in previous instruction not available Due to pipelining if an address register Rn or Nn is changed in the previous in struction the new contents are not available for use as a pointer until the next in struction Count must be an integer value The argument to a DUP directive did not evaluate as an integer expression CRE option must be used before any label The CRE option must be activated before any labels are encountered so that the assembler can append cross reference data to all applicable symbol table entries Data allocation exceeds buffer size Data allocated between a BUFFER ENDBUF sequence exceeded the size speci fied in the BUFFER directive Decimal constant expec
262. not be specified as a destination in the parallel data bus move operation Duplicate source and destination register not allowed If the opcode operand portion of an instruction specifies a source register the same register or portion of that register may not be specified as a destination in the parallel data bus move operation Either source or destination memory space must be X or Y One of the operands in a MOVEP instruction must reference a location in X or Y memory ELSE without associated IF directive An ELSE directive was encountered without a preceding IF conditional assembly directive ELSE without associated IF directive An ELSE directive was encountered before a matching IF conditional structured control statement Empty bit mask field The first operand of a BFxxx type instruction was zero End of structure or union without matching definition A source level debug end of structure symbol declaration was recognized without a preceding structure or union definition ENDBUF without associated BUFFER directive An ENDBUF directive was encountered without a preceding BUFFER directive ENDEF without associated DEF directive A source level debug ENDEF directive was encountered without a preceding DEF directive DI CLSALL AAA ANAALATLZ LLLL L LLLLHIAAALLLLLLULLLLLLLLOXLT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 203 Appendix C ASSEMBLER MESSAGES ENDF without associated FOR directive ENDI withou
263. ns Macro functions return information about macros ARG Macro argument function CNT Macro argument count MAC Macro definition function MXP Macro expansion function EEO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 27 Chapter 3 EXPRESSIONS 3 8 5 Assembler Mode Functions Miscellaneous functions having to do with assembler operation CCC Cumulative cycle count CHK Current instruction data checksum CTR Location counter type DEF Symbol definition function EXP Expression check INT Integer check LCV Location counter value LST LIST directive flag value MSP Memory space REL Relative mode function Individual descriptions of each of the assembler functions follow They include usage guidelines functional descriptions and examples ABS lt expression gt Returns the absolute value of lt expression gt as a floating point value The memory space attribute of the result will be None Example MOVE ABS VAL D4 S load absolute value ACS lt expression gt Returns the arc cosine of lt expression gt as a floating point value in the range zero to pi The result of lt expression gt must be between 1 and 1 The memory space attribute of the result will be None Example ACOS ACS 1 0 3 141593 ARG lt symbol gt lt expression gt Returns integer 1 if the macro argument represented by lt symbol gt or lt expression gt is present 0 otherwise If the argume
264. ns are converted to a concatenated sequence of ASCII bytes right aligned as shown below Strings used in expressions are limited to the long word size of the target processor subsequent characters in the string are ig nored Null strings strings that have no characters have a value of 0 String constants greater than the maximum number of characters can be used in expres sions but the assembler will truncate the value and will use only those characters that will fit DSP long word In this case a warning will be printed This restriction also applies to string constants using the string concatenation operator Handling of string constants by the DC and DCB directives is an exception to this rule see Chapter 6 for a description Examples ABCD 41424344 79 00273739 00000041 00000000 null string abcdef 61626364 abc de 61626364 3 6 OPERATORS Some of the assembler operators can be used with both floating point and integer values If one of the operands of the operator has floating point value and the other has an in teger value the integer will be converted to a floating point value before the operator is applied and the result will be floating point If both operands of the operator are integers the result will be an integer value Similarly if both the operands are floating point the result will be a floating point value 3 6 1 Unary operators plus minus one s compleme
265. nt Integer only logical negate 2222 12 22 22 22 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS The unary plus operator returns the value of its operand The unary minus operator returns the negative of its operand The one s complement operator returns the one s complement of its operand It cannot be used with a floating point operand The unary logical negation operator returns an integer 1 memory space attribute None if the value of its operand is O and will return a 0 otherwise For example if the symbol BUF had a value of 0 then BUF would have a value of 1 If BUF had a value of 1000 IBUF would have a value of 0 3 6 2 Arithmetic operators addition subtraction multiplication division The addition operator yields the sum of its operands The subtraction operator yields the difference of its operands The multiplication operator yields the product of its operands The divide operator yields the quotient of the division of the first operand by the second For integer operands the divide operation will produce a truncated integer result The mod operator applied to integers will yield the remainder from the division of the first operand by the second If the mod operator is used with floating point operands the mod operator will apply the following rules Y9o6Z 2Y 2 0 X 2 lt gt 0 where X has the same sign as Y is less than Z and satisfies the rel
266. nt SYNAX LOOP cnt lt stmtlist gt ENDL FUNCTION Execute lt stmtlist gt lt cnt gt times This is similar to the FOR loop construct except that the initial counter and step value are implied to be 1 It is ac tually a shorthand method for setting up a hardware DO loop on the DSP without having to worry about addressing modes or label placement NOTES Since the LOOP statement generates instructions for a hardware DO loop the same restrictions apply as to the use of certain instructions near the end of the loop nesting restrictions etc One or more CONTINUE directives inside a LOOP construct will generate a NOP instruction just before the loop address EXAMPLE LPCNT hardware loop LPCNT times ENDL 176 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS 7 36 Statement SYNTAX REPEAT lt stmtlist gt UNTIL lt expression gt FUNCTION lt stmtlist gt is executed repeatedly until lt expression gt is true When expres sion becomes true advance to the next instruction following UNTIL NOTES The stmtlist is executed at least once even if expression is true upon entry to the REPEAT loop EXAMPLE REPEAT UNTIL x r1 EQ 0 loop until zero is found 7 3 7 WHILE Statement SYNTAX WHILE lt expression gt DO lt stmtlist gt ENDW FUNCTION The lt expression gt is tested before exe
267. nt is a symbol it must be single quoted and refer to a dummy argument name If the argument is an expression it refers to the ordinal position of the argument in the macro dummy argument list A warning will be issued if this function is used when no macro expansion is active The memory space attribute of the result will be None Example IF ARG TWIDDLE twiddle factor provided ii ______ _ ee a ________________________________________________________ 28 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 3 EXPRESSIONS ASN lt expression gt Returns the arc sine of lt expression gt as a floating point value in the range pi 2 to pi 2 The result of lt expression gt must be between 1 and 1 The memory space attribute of the result will be None Example ARCSINE SET 1 0 ARCSINE 1 570796 2 lt 2 gt Returns the arc tangent of lt expr1 gt lt expr2 gt as a floating point value in the range pi to pi Expr1 and expr2 must be separated by a comma The memory space attribute of the result will be None Example ATAN EQU AT2 1 0 1 0 ATAN 0 7853982 ATN lt expression gt Returns the arc tangent of lt expression gt as a floating point value in the range pi 2 to pi 2 The memory space attribute of the result will be None Example MOVE ATN 1 0 D0 S load arc tangent CCC Returns the cumulative cycle count as an integer Useful in conjunction with the CC
268. o catable value the assembler uses the relative runtime location counter In this case OVL1 must not itself be an overlay symbol e g defined within an overlay block The load memory space is Y Since neither H L nor any counter expression was specified as the load counter the default load counter counter 0 will be used as the load location counter The counter value and mode will be whatever it was the last time it was referenced DI S E 7cIKLALAAARLLILLLLLILLLLLLLLUIALALLLLL LL LAAALALLUULLLLZSGZULGAA6DBDCALAILIT 48 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT ORG XL E8 Sets the runtime memory space to X Selects the L counter counter 1 associated with X space to use as the runtime location counter The L counter will not be ini tialized and its last value will be used The load memory space is set to E and the qualifier 8 indicates a bytewise RAM configuration Instructions and data will be generated eight bits per output word with byte oriented load addresses The de fault load counter will be used and there is no explicit load origin ORG P 5 Y 8000 Indicates code will be generated for an absolute overlay The runtime memory space is P and the counter used as the runtime location counter is counter 5 will not be initialized and the last previous value of counter 5 will be used The load memory space is Y Since neither H L nor any counter expression was specifi
269. o consecutive semi colons that are not part of a literal string Unreported comments are not considered significant by the assembler and can be included in the source statement following the same rules as normal comments However unreported comments are never reproduced on the assembler output listing and are never saved as part of macro definitions EXAMPLE 5 THESE LINES WILL NOT BE REPRODUCED IN THE SOURCE LISTING MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 77 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES Line Continuation Character or Macro Argument Concatenation Character Line Continuation The backslash character 1 if used as the last character on a line indicates to the assem bler that the source statement is continued on the following line The continuation line will be concatenated to the previous line of the source statement and the result will be pro cessed by the assembler as if it were a single line source statement The maximum source statement length the first line and any continuation lines is 512 characters EXAMPLE THIS COMMENT 1 EXTENDS OVER THREE LINES Macro Argument Concatenation The backslash is also used to cause the concatenation of a macro dummy argument with other adjacent alphanumeric characters For the macro processor to recognize dum my arguments they must normally be separated from other alphanumeric characters by anon symbol character However someti
270. ocessed the resolved symbol value is used to modify the raw data indicated by the relocation entry atr vaddr In Motorola DSP COFF symndx is an offset into the string table which points to a relo cation expression The linker interprets this expression and updates the entire word at r vaddr with the result of the expression evaluation The relocation type is always zero See section E 5 OBJECT FILE DATA EXPRESSION FORMAT for more information on relocation expressions E 4 5 Block Data Sections Generic COFF does not make allowance for a block data section A block data section results from use of the assembler BSC directive where a large block of memory is initial ized with a single value Block data sections are handled in Motorola 5 COFF by mak ing special use of the section s vaddr field and adding an informative flag In most cases the section virtual address is the same as the physical address However for block data sections in Motorola DSP object files the virtual address field holds the re peat count for the single raw data value associated with the section For example if the assembly language source file included a directive of the form BSC 400 FFFF the s vaddr field would contain the value 400 the 6 size field would be 1 or 2 if in L mem ory and the single raw data word associated with the section would be FFFF In addi tion the STYP BLOCK flag is set in the section s flags field E 4 6 Other Extensions If t
271. of two types The first type merely tests conditions currently spec ified by the contents of the CCR section 7 4 1 1 The second type sets up a comparison of two operands to set the condition codes and afterwards tests the codes section 7 4 1 2 7411 Condition Code Expressions A variety of tests identical to those in the Jcc instruction may be performed based on the CCR condition codes The condition codes in this case are preset by either a user generated instruction or a structured operand comparison expression section 7 4 1 2 Each test is expressed in the structured control statement by a mnemonic enclosed in an gle brackets the mnemonics are described in Appendix F Condition Code Mnemonics lt 178 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS When processed by the assembler the expression generates an inverse conditional jump to beyond the matching ENDX UNTIL directive For example lt gt bit set 2 100002 generated by assembler CLR D1 user code ENDI Z L00002 assembler generated label REPEAT subtract until DO lt D7 Z L00034 assembler generated label SUB D7 DO code UNTIL LT 2 L00034 generated by assembler 7 4 1 2 Operand Comparison Expressions Two operands may be compared in a simple expression with su
272. ol table corresponding to the reference requiring modification The relocation type encodes how the raw data is to be changed to reflect the resolved symbol value In Motorola DSP COFF symndx is an offset into the string table which points to a relo cation expression The linker interprets this expression and updates the word atr vaddr with the result of the expression evaluation The relocation type is always zero See sec tion E 5 OBJECT FILE DATA EXPRESSION FORMAT for more information on reloca tion expressions E 3 3 3 Line Numbers When the compiler or assembler is invoked with the G debug option an entry is made in the object for every source line where a breakpoint can be inserted It is then possible to reference source line numbers when using a debugger The structure of an object file line entry is shown in Figure E 9 Declaration Name Description long symndx Function name symbol table index CORE ADDR Line number physical address unsigned long Inno Source file line number Figure E 9 Line Number Entry Format All line numbers in a section are grouped by function as shown in Figure E 10 The first entry in a function grouping has line number 0 and has in place of the physical address ___46_______ ________________________________________________________ 262 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF an index
273. on The runtime header is similar to standard COFF a out optional header formats Figure E 4 shows the linker optional header The module size field gives the size of the entire object module The data size field reflects the size of the entire raw data block with in the module The endstr field points to an expression in the string table which originated with the assembler END directive see Chapter 6 it indicates the starting address of the module If this field is negative or zero there is no end expression The logical section count is the count of sections in the object module created via the assembler SECTION directive see Chapter 6 The counter count represents the number of COFF sections in the file analogous to the file header f nscns field The relocation entry and line number counts hold the number of all relocation entries and line number records in the file The 256 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF buffer and overlay counts give counts for each instance of a buffer or overlay in the mod ule The major version minor version and revision number fields reflect the assembler and linker versions to insure linker backward compatibility The optional header flags hold special mode flags for the linker Declaration Name Description long int modsize Object module size long int datasize Module raw data size long int endstr End direct
274. on the host environment See Appendix G HOST DEPENDENT INFORMATION for details on installing and operating the assembler on your particular machine 1 4 RUNNING THE ASSEMBLER The general format of the command line to invoke the assembler is DSPASM options lt filenames gt where DSPASM The name of the Motorola DSP assembler program appropriate for the tar get processor see Appendix F DEVICE DEPENDENT INFORMATION MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 1 Chapter 1 MOTOROLA DSP ASSEMBLER For example for the Motorola DSP56000 processor the name of the assem bler executable is ASM56000 options Any of the following command line options These can be in any order but must precede the list of source filenames Some options can be given more than once the individual descriptions indicate which options may be speci fied multiple times Option letters can be in either upper or lower case Command options that are used regularly may be placed in the environment variable DSPASMOPT If the variable is found in the environment the as sembler adds the associated text to the existing command line prior to pro cessing any options See your host documentation for instructions on how to define environment variables Option arguments may immediately follow the option letter or may be sepa rated from the option letter by blanks or tabs However an ambiguity arises if an option takes an optional argument Consider the followin
275. on the hard disk and the hard disk is the current logged disk the following command will copy the assembler from the installation diskette in drive A to that directory COPY A ASM56000 EXE BIN Again keep the assembler distribution diskette in a safe place as a backup G 2 3 Source File Text Input to the assembler should be in a standard ASCII text file with carriage return line feed character pairs as line terminators This type of file is created by most standard text editing programs used on 386 PCs such as the DOS supplied editor EDIT Using word processing packages for creating assembler input source files is a little more involved but can certainly be done Word processing packages use special character en codings to indicate format and font settings margins indentation and so forth In some cases these special encodings violate the input requirements of the assembler and must be removed or changed Most word processing programs have a facility for converting internal format documents to standard ASCII text files See Chapter 2 INPUT FILE FORMAT for more information on the form and content of assembler input files G 2 4 Invoking the Assembler The assembler is invoked from the DOS command line by entering the name of the as sembler executable without the extension followed by any desired options and finally the 308 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix HOST DEPENDENT INFORMATION names of the s
276. ons In a MPYSU MACSU or DMACSU instruction the signed operand must come first in the operand ordering Source operand assumed short Neither operand in a MOVEP instruction is explicitly declared short however the destination operand does not qualify so the source operand is assumed to be the I O short operand Storage block size not a power of 2 The expression in a DSR directive did not evaluate to a power of 2 Since the DSR directive is generally used to allocate FFT buffers for reverse carry operations the size of the buffer may be in error String truncated in expression evaluation Only the first four characters of a string constant are used during expression eval uation except for arguments to the DC directive see Chapter 6 EEE 198 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Strip not valid in relocatable mode ignored The Z option is valid only when the A option is also given Unresolved external reference Ordinarily the assembler does not flag unresolved references in relative mode as suming they will be resolved at link time If the UR option is specified the assem bler will generate this warning if any symbols are undefined during the second pass HUC A91 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 199 Appendix ASSEMBLER MESSAGES 4 ERRORS Absolute address contains forward reference force short or short address The a
277. ons may contain user defined labels integers floating point numbers or literal strings An object file data expression generally follows the guidelines of assembler expressions except that functions are not supported e g they must be evaluated at assembly time and operators are provided for linker specific operations Al so floating point terms found in these expressions are converted to binary values E 5 1 Data Expression Generation Link file data expressions are generated when external or relocatable operands are en countered during assembly or incremental link processing In most cases the operand ex pression is copied verbatim from the source and embellished with link evaluation control constructs For example consider the source line below MOVE FOO RO The DSP96000 assembler produces the following encoding for this line in the object file 3A8D2000 0 0 Since the symbol FOO is not known to the assembler it generates a two word instruction and places a relocation reference to the expression in the position of the second instruc word The braces f indicate that this is a user expression that should adhere to certain integrity constraints such as those governing absolute and relative terms Other wise the braces are treated much like parentheses The at sign is a binary operator indicating the memory space of the left operand by the right The pound sign is a binary operator signifying the size in b
278. option specifies that an object file is to be created for assembler output lt objfil gt can be any legal operating system filename including an optional pathname A hyphen also may be used as an argument to indicate that the object file should be sent to the standard output The type of object file produced depends on the assembler operation mode If the A option is supplied on the command line the assembler operates in absolute mode and generates an absolute object CLD file If there is no A option on the command line the assembler operates in relative mode and creates a relocatable object CLN file If a pathname is not specified the file will be created in the current directory If no filename is specified the assembler will use the basename filename without extension of the first filename encountered in the source input file list and append the appropriate file type CLN or CLD to the basename If the B option is not specified then the assembler will not generate an ob ject file The B option should be specified only once If the file named in the B option already exists it will be overwritten Example ASM56000 Bfilter main asm fft asm fio asm In this example the files MAIN ASM FFT ASM and FIO ASM are assembled together to produce the relocatable object file FILTER CLN D lt symbol gt lt string gt This is equivalent to a source statement of the form DEFINE lt symbol gt lt string gt lt string gt m
279. or absolute Example IF SGN INPUT is sign positive SIN lt expression gt Returns the sine of lt expression gt as a floating point value The memory space at tribute of the result will be None Example DC SIN CVF COUNT FREQ compute sine value SNH lt expression gt Returns the hyperbolic sine of lt expression gt as a floating point value The memory space attribute of the result will be None Example HSINE EQU SNH VAL hyperbolic sine SQT lt expression gt Returns the square root of lt expression gt as a floating point value lt expression gt must be positive The memory space attribute of the result will be None Example SQRT EQU SQT 3 5 SQRT 1 870829 TAN lt expression gt Returns the tangent of lt expression gt as a floating point value The memory space attribute of the result will be None Example MOVE TAN 1 0 D1 S load tangent DSP ASSEMBLER REFERENCE MANUAL 37 Chapter 3 EXPRESSIONS TNH lt expression gt Returns the hyperbolic tangent of lt expression gt as a floating point value The memory space attribute of the result will be None Example HTAN TNH VAL hyperbolic tangent UNF lt expression gt Converts lt expression gt to a floating point value For fractional DSPs DSP56000 lt expression gt should represent a binary fraction For floating point DSPs DSP96000 lt expression gt should represent a binary
280. ote The assembler was expecting the start of a quoted string Syntax error extra characters Extra characters were found after an instruction or directive operand Syntax error invalid assignment operator The loop assignment operator in a FOR structured control statement is not an equals sign z Syntax error invalid compound operator Structured control statement compound operators are either AND or OR 226 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Syntax error invalid conditional operator The conditional operator in a structure control statement expression is not valid Syntax error invalid statement terminator There were extra or invalid characters found at the end of a structured control statement Syntax error missing address mode specifier An instruction operand was not specified Syntax error missing operand An operand in a structured control statement expression was missing Syntax error in directive name list A character other than a comma was found separating the arguments in an RDI or SYMOBU directive name list Syntax error in dummy argument list A character other than a comma was found separating the dummy arguments in a macro definition MACRO directive or a dummy argument began with the under score character Syntax error in macro argument list A character other than a comma was found separating the arguments in a macro call Syntax
281. otorola DSP linker In ab solute mode the assembler generates absolute object files Absolute files cannot be re located but can be loaded directly for execution By default the assembler runs in relative mode 1 7 ASSEMBLER SUPPORT FOR DIGITAL SIGNAL PROCESSING As mentioned previously the assembler offers facilities commonly found in other macro assemblers such as nested macro capabilities include files and conditional assembly The assembler must also provide extensions in support of the unconventional architecture of the Motorola digital signal processors as well as aids for programming DSP specific applications Some of these features are discussed briefly below see the appropriate chapters later in this manual for more information The assembler supports the use of arbitrary algebraic expressions as arguments to vari ous directives and as immediate operands in certain instructions Terms of these expres sions may consist of the assemblers own built in functions which perform data conversion comparison and computational operations In the digital signal processing domain transcendental functions for computing sine cosine and natural logarithm are ________________________________________________________________________________________________________ 10 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 1 MOTOROLA DSP ASSEMBLER useful for initializing data values in memory such as sine cosine tables for FFT algo rithms A
282. ource files to be assembled See Chapter 1 RUNNING THE ASSEM BLER for a list of options which can be included on the command line As an example if the assembler diskette was loaded in drive A and the source file was located on the disk in drive B the following command at the DOS prompt would assemble the file MYFILE ASM putting the object file MYFILE CLN and the listing file OUT FILE LST onto the disk in drive B as output A ASM56000 Bb myfile cln Lb outfile lst b myfile Since DOS supports standard input and output channels in the example above any warn ing or error messages would appear both in the listing file and on the standard output by default the console screen DOS also supports redirection so that the assembler listing can be sent to a file or directly to an output device Given a hard disk environment where the assembler execut able has been loaded into a directory BIN that is in the program search path the following command will assemble the source file FFT ASM and send the listing output directly to the Line Printer 1 device ASM56000 fft dsp gt LPT1 In this example no object file is created and all errors and warnings are sent to LPT1 e g they do not appear on the console screen The input file is assumed to be in the current directory See the IBM or Microsoft DOS manual for more information on directory struc ture I O redirection and command paths G 3 SunOS ENVIRONMENT The Motorola DSP assembl
283. parating operand elements The operand field of machine instructions is used to specify the addressing mode of the instruction as well as the operand of the instruction The format of the operand field for a particular instruction is given in Appendix A of the User Manual for the DSP in question e g DSP56000 DSP56001 User s Manual The operand fields of assembler directives are described in Chapter 6 The operand fields of macros Chapter 5 depend on the def inition of the macro 2 44 Operation 2 Field DSP96000 only The second operation field occurs after the first operand field and only in conjunction with an FMPY instruction The field must be preceded by at least one space or tab The second operation field may consist only of the instructions FADD FSUB and FADDSUB 2 4 5 Operand2Field DSP96000 only The interpretation of the second operand field is dependent on the con tents of the second operation field The second operand field if present must follow the second operation field and must be preceded by at least one space or tab The operand field may contain only those register combinations appropriate to the second operation field The operand field of machine instructions is used to specify the addressing mode of the instruction as well as the operand of the instruction The format of the operand field for each DSP96000 instruction is described in Appendix A of the DSP96002 User s Manual 2 4 6 Data Transfer Fields
284. perands must be preceded by a pound sign Memory refer OOo 174 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS ences must be preceded by a memory space qualifier X Y or memory references are not allowed Operands must be or refer to single word values The logic generated by the FOR directive makes use of several DSP data registers see Appendix F In fact two data registers are used to hold the step and target values respectively throughout the loop they are never re loaded by the generated code It is recommended that these registers not be used within the body of the loop or that they be saved and restored prior to loop evaluation The DO keyword is optional EXAMPLE FOR X CNT 0 TO Y targ 2 114 loop on ENDF 7 34 IF Statement SYNTAX expression THEN lt stmtlist gt ELSE lt stmtlist gt ENDI FUNCTION If lt expression gt is true execute lt stmtlist gt following THEN the keyword THEN is optional if lt expression gt is false execute lt stmtlist gt following ELSE if present otherwise advance to the instruction following ENDI EE OOO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 175 Chapter 7 STRUCTURED CONTROL STATEMENTS NOTES In the case of nested IF THEN ELSE statements each ELSE refers to the most recent IF THEN sequence EXAMPLE EQ Zero bit set ENDI 7 35 LOOP Stateme
285. pond ing argument as defined by the macro call All local labels within a macro are considered distinct for the currently active level of macro expansion unless the macro local label override is used see below These local labels are valid for the entire macro expansion and are not considered bounded by non local la bels Therefore all local labels within a macro must be unique This mechanism allows the programmer to freely use local labels within a macro definition without regard to the number of times that the macro is expanded Non local labels within a macro expansion are considered to be normal labels and thus cannot occur more than once unless used with the SET directive see Chapter 6 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 63 Chapter 5 MACRO OPERATIONS AND CONDITIONAL ASSEMBLY When specifying a local label within the body of a macro the programmer must be aware that the label symbol is valid for the entire body of the current level of macro expansion It is not valid for any nested macros within the current level of expansion The example above shows why the local label feature is useful If the macro MUL were called several times there would be several ENDLOOP labels resulting from the macro expan sions This is acceptable because each ENDLOOP label is considered private to a par ticular instance of macro expansion It is sometimes desirable to pass local labels as macro arguments to be used within th
286. port of struc tured control statements on a particular processor The SCSREG directive Chapter 6 may be used to reassign structured control statement registers The MEX assembler op tion see the OPT directive Chapter 6 may be used to send the assembler generated code to the listing file for examination of possible register use conflicts 5 222 182 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASCII CHARACTER CODES Decimal Hex ASCII Decimal Hex ASCII 0 00 NUL 64 40 1 01 65 41 2 02 STX 66 42 B 3 03 ETX 67 43 C 4 04 EOT 68 44 D 5 05 ENQ 69 45 E 6 06 ACK 70 46 F 7 07 BEL 71 47 G 8 08 BS 72 48 9 09 7 49 10 0 LF 74 4A J 11 VT 75 4B K 12 0C FF 76 4C L 13 CR 77 4 14 50 78 4E N 15 51 79 16 10 DLW 80 50 P 17 11 DC1 81 51 Q 18 12 DC2 82 52 R 19 13 DC3 83 53 5 20 14 DC4 84 54 T 21 15 NAK 85 55 U 22 16 SYN 86 56 V 23 17 ETB 87 57 24 18 88 58 25 19 89 59 26 SUB 90 5A Z 27 1B ESC 91 5B 28 1C FS 92 5C 29 10 GS 93 5D 30 RS 94 5E 31 1F US 95 5F _ 32 20 SP 96 60 33 21 97 61 a 34 22 98 62 b 35 23 99 63 C EN NRELELLLLLLZLLILLIALG L A LA LLLLLLULULA LUTUATAZAZAZi L ILLALLCCLLLLLLLLLLUU MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 183 Appendix A ASCII CHARACTER CODES Decimal Hex ASCII Decimal Hex ASCII 36 24 100 64 d 37 25 96 101 65 e 38 26 amp 102 66 f 39 27 103 67 g
287. pres sion is that part of a data expression that was written by the programmer and not gener ated by the assembler or linker as part of its control requirements It is useful to isolate the user expression in order to check for relationships among absolute and relative terms In all other respects the curly braces behave like parentheses E 5 2 2 Relocatable Expression 1 The square brackets are used to enclose a relocatable expression The value con tained in the square brackets is an offset from the base of the current section Usually this grouping operator is placed around the value of an assembler local label underscore la bel since these symbols do not migrate to the link file E 5 2 3 Memory Space Operator The at sign is a binary operator that checks the memory space compatibility of the left operand based on the value of the right operand The right operand can have the follow ing values 0 E None 1 X space 2 3 L space 4 5 The compatibility check is made based on the matrix outlined in section 3 3 EXPRES SION MEMORY SPACE ATTRIBUTE E 5 2 4 Bit Size Operator The pound sign is a binary operator used to verify the size in bits of the left operand given the value of the right operand The following bit sizes and operand type correspon dences are defined 16 16 bit signed short immediate or offset 15 15 bit signed short PC relative add
288. racter Use of local labels in macros represents a special case All local labels within a macro are considered distinct for the currently active level of macro expansion unless the macro local label override operator is used see Chapter 5 These local labels are valid for the entire macro expansion and are not considered bounded by non local labels Therefore all local labels within a macro must be unique This mechanism allows the programmer to freely use local labels within a macro definition without regard to the number of times that the macro is expanded Non local labels within a macro expansion are considered to be normal labels and therefore cannot occur more than once unless used with the SET directive see Chapter 6 A label may occur only once in the label field of an individual source file unless it is used as a local label a label local to a section or is used with the SET directive If a non local label does occur more than once in a label field each reference to that label after the first will be flagged as an error A line consisting of a label only is a valid line and has the effect of assigning the value of the location counter to the label With the exception of some directives a label is assigned the value of the location counter of the first word of the instruction or data being assem bled 2 4 2 Operation Field The operation field appears after the label field and must be preceded by at least one space or tab Ent
289. racter strings represent words whose bytes are composed of concatenated sequences of the ASCII representation of the characters in the string unless the NOPS option is specified see the OPT directive If the number of characters is not an even multiple of the number of bytes per DSP word then the last word will have the remaining characters left aligned and the rest of the word will be zero filled If the NOPS option is given each character in the string is stored in a word whose lower seven bits represent the ASCII value of the character EXAMPLE AB CD 414200 434400 See also BSC DC EXAMPLE TABLE DCB two O strings O CHARS DCB A B C D 21222212212 2 4 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 103 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DEFINE Define Substitution String DEFINE symbol X string The DEFINE directive is used to define substitution strings that will be used on all follow ing source lines All succeeding lines will be searched for an occurrence of symbol which will be replaced by string This directive is useful for providing better documen tation in the source program symbol must adhere to the restrictions for non local la bels That is it cannot exceed 512 characters the first of which must be alphabetic and the remainder of which must be either alphanumeric or the underscore A warning will result if a new definition of a previously defined symbol is a
290. rated com pare If the compound expression is an AND expression and one of the simple expressions is found to be false any further simple expressions are not evaluated Likewise if the com pound expression is an OR expression and one of the simple expressions is found to be true any further simple expressions are not evaluated In these cases the compound ex pression is either false or true respectively and the condition codes reflect the result of the last simple expression evaluated 7 5 STATEMENT FORMATTING The format of structured control statements differs somewhat from normal assembler us age Whereas a standard assembler line is split into fields separated by blanks or tabs with no white space inside the fields structured control statement formats vary depending on the statement being analyzed In general all structured control directives are placed in the opcode field with an optional label in the label field and white space separates all distinct fields in the statement Any structured control statement may be followed by a comment on the same logical line 7 5 1 X Expression Formatting Given an expression of the form opi LT lt op2 gt op3 GE lt 4 gt 180 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 7 STRUCTURED CONTROL STATEMENTS there must be white space blank tab between all operands and their associated opera tors including boolean operators in compound expr
291. raw data word associated with the section would be FFFF The section size is the count of raw data words associated with the section This is in con trast to standard COFF section sizes which usually are given in bytes Raw data words currently are stored in the object file as long 4 byte integers independent of the target processor word size The file pointer fields are file byte offsets into the object file to the start of the current sec tion raw data relocation entries and line number information The counts of relocation and line number entries provide an upper bound for scanning these tables The section flags comprise the section attributes and are described in Figure E 7 e A o Oe 260 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Mnemonic Meaning STYP REG Regular section STYP DSECT Dummy section STYP_NOLOAD Noload section STYP_GROUP Grouped section STYP_PAD Padding section STYP_COPY Copy section STYP_TEXT Executable text section STYP_DATA Initialized data section STYP_BSS Uninitialized data section STYP_BLOCK Block data section STYP_OVERLAY Overlay section STYP_MACRO Macro section Figure E 7 Section Header Flags Text sections are reserved for code to be loaded into program memory P space Data sections hold initialized data generated by assembl
292. re not yet defined forward references or if the expression has a value of less than or equal to zero Also if the first expression is not a power of two a warning will be gen erated Both expressions can have any memory space attribute lt label gt if present will be assigned the value of the runtime location counter after a valid base address has been established Only one word of object code will be shown on the listing regardless of how large the first expression is However the runtime location counter will be advanced by the number of words generated See also BSC BSM DC EXAMPLE BUFFER BSB BUFSIZ INITIALIZE BUFFER TO ZEROS EEE 96 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES BSC Block Storage of Constant lt label gt BSC lt expression gt lt expression gt The BSC directive causes the assembler to allocate and initialize a block of words The number of words in the block is given by the first expression which must evaluate to an absolute integer Each word is assigned the initial value of the second expression If there is no second expression an initial value of zero is assumed If the first expression contains symbols that are not yet defined forward references or if the expression has a value of less than or equal to zero an error will be generated Both expressions can have any memory space attribute lt label gt if present will be assigned
293. ress 7 7 bit signed short immediate or offset 6 6 bit signed short PC relative address 5 5 bit signed short offset 1 Negated immediate shift 0 DSP word size immediate or absolute 1 Immediate shift _____ _____________________________ DSP ASSEMBLER REFERENCE MANUAL 285 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF 5 5 bit short absolute 6 6 bit short immediate or absolute 7 7 bit short immediate absolute or offset 8 8 bit short immediate or absolute 12 12 bit short immediate or absolute 19 19 bit short immediate 85 86 87 5 6 7 bit I O short absolute E 5 2 5 Memory Attribute Operator The colon is used to assign a memory space and counter encoded in the right operand to the left operand The low sixteen bits of the right operand contain the counter designa tor for the left operand The high sixteen bits contain the memory space designator for the left operand The value here corresponds to the memory space values given for the memory space operator described above E 5 2 6 Line Number Operator The exclamation point is a binary operator that associates the source file line number of the left operand to the value of the right operand The left operand is a decimal value representing the source file line number The right operand is an arbitrary relocation ex pression The line number operator assists the linker in correlating source line numbers to expre
294. ries in the operation field may be one of three types Opcode Mnemonics that correspond directly to DSP machine instructions Directive Special operation codes known to the assembler which control the assembly process Macro call Invocation of a previously defined macro which is to be inserted in place of the macro call The assembler first searches for operation codes in an internal macro definition table no match is found the table of machine operation codes and assembler directives is searched If neither of the tables holds the specified operation code an error message is generated this sequence can be altered with the MACLIB directive Macro names can therefore replace standard machine operation codes and assembler directives although a warning will be issued if such a replacement occurs The warning can be avoided by use of the RDIRECT directive See Chapter 6 for more information on the MACLIB and RDIRECT directives 16 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS 2 4 3 Operand Field The interpretation of the operand field is dependent on the contents of the operation field The operand field if present must follow the operation field and must be preceded by at least one space or tab The operand field may contain a symbol an expression or a com bination of symbols and expressions separated by commas There should be no inter vening whitespace characters se
295. ring table offset to symbol name A SLOCAL Relocatable address A ULOCAL Relocatable address A MLOCAL Relocatable address Figure E 16 Storage Class and Value continued If a symbol has storage class FILE or A FILE the value of that symbol equals the sym bol table entry index of the next FILE or A FILE symbol That is the FILE and A FILE entries form a one way linked list in the symbol table If there are no more C FILE or A FILE entries in the symbol table the value of the symbol is the index of the first global symbol Relocatable symbols have a value equal to the relocatable address of that symbol When the section is relocated by the linker the value of these symbols changes E 3 4 6 Auxiliary Entries Every symbol table entry may have zero one or more auxiliary entries These auxiliary entries are used to hold additional information about the primary symbol The number of auxiliary entries associated with a given symbol can be determined by examining the n numaux field of the main symbol entry An auxiliary symbol table entry contains the same number of bytes as its associated sym bol table entry and is contiguous with the primary entry in the object file Unlike primary symbol table entries however the format of an auxiliary entry depends on the type and storage class of the main symbol L LDLLALAAALAZAZALLZALA1ZALALIALL IVL LLLLLLLULLLLLLAET 272 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E
296. rnal high P memory initialization statement might correspond to the memory location of an external EPROM After the location counters corresponding to the X Y and P rogram memory spaces are initialized the assembler is directed to take input from the MAIN ASM file with the IN CLUDE directive Within the MAIN ASM file the source statements are assembled and object code is generated The X Y L and P rogram location counters High Low are advanced corresponding to the number of words generated for each memory space and location counter in use When the end of the MAIN ASM file is encountered the assembler returns to the next se quential statement in the PROJECT ASM file This directs the assembler to start taking input from the IO ASM file Within this file the ORG PL statement directs the assembler 52 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT to set the current memory space to P rogram and restore the last used P rogram L ow location counter The lO source program statements shown previously will be assem bled at the next available Low Program memory space When the end of the IO ASM file is encountered the X Y and P rogram location counters High and Low will have been advanced corresponding to the number of words generated for each memory space In a similar manner the file FILTER ASM will be assembled The last statement of the PROJECT ASM file informs the assembler that th
297. rnal memory likewise the LL LZLLLLLLLLLLLZAZLLLLLLLLLLLLLL AIA IAAmTHTANAZAALLZ OF A LLLL LLL ALLLLLLLLLT 56 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT P default counter is set to hex 200 and mapped to internal memory Base addresses can also be established with the linker memory control file The linker reads each input object file placing the header file in internal P memory and combining the overlay modules into a contiguous block loaded into external X memory at location 100 hexadecimal Any labels or jumps within the overlay blocks are resolved to addresses relative to the relocatable symbol OVLBASE Since OVLBASE is the first load P memory address it is assigned the value 200 hexadecimal The linker does not guaran tee that a given symbol or section will begin at a particular location unless that information is explicitly specified in the linker memory control file For more information on specific linker operations see the Motorola DSP Linker Librarian Reference Manual 4 8 EXAMPLE 3 BOOTSTRAP OVERLAY Many Motorola DSP processors specifically those with RAM based program memory support a bootstrap mode of operation This involves mapping a built in ROM based boot strap program into P memory executing the program to move user supplied code from another location usually EPROM into program RAM then transferring control to the user program Because the user program is loaded in one loca
298. rns the memory space attribute and value of the runtime location counter The optional second argument indicates the Low High or numbered counter and must be separated from the first argument by a comma If no second argument is present the default counter counter 0 is assumed The LCV function will not work correctly if used to specify the runtime counter value of a relocatable overlay This is because the resulting value is an overlay expression and overlay expressions may not be used to set the runtime counter for a subsequent overlay See the ORG directive Chapter 6 for more information Example ADDR LCV R save runtime address LEN lt string gt Returns the length of lt string gt as an integer The memory space attribute of the result will be None Example SLEN SET LEN string SLEN 6 LFR lt expression gt For binary fractional DSPs DSP56000 this functions performs scaling and con vergent rounding to obtain the fractional representation of the floating point lt ex pression gt as a long integer For floating point DSPs DSP96000 this function simply returns the binary representation of lt expression gt as a long integer The memory space attribute of the result will be None Example LFRAC EQU LFR LFLT store binary form LNG lt expr1 gt lt expr2 gt Concatenates the single word lt expr1 gt and lt expr2 gt into a double word value such that lt expr1 gt is the high word and lt
299. rrors and warnings are routed to the file test err The input file test asm is assumed to be in the current working directory Note that the L option is used to send the full assembler listing to the null device G 4 MACINTOSH ENVIRONMENT The Motorola DSP assembler is delivered as an MPW executable tool on a double sided 3 1 2 Macintosh diskette It may be run from either a floppy drive or a hard disk The as sembler currently makes no use of disk for work space and requires adequate secondary storage only for the output object file and the listing file if the latter is routed to disk 310 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix HOST DEPENDENT INFORMATION G 4 1 Hardware Requirements The minimum hardware requirements for the assembler in the Macintosh environment in clude Macintosh with 68020 or later CPU 4MB of RAM and one 3 1 2 diskette drive System Finder v6 0 or later Macintosh Programmer s Workshop MPW v2 0 or later Since the assembler uses all of available memory for storage of symbols and macros the optimal system configuration would have at least 4megabytes of memory G 4 2 Installation Make a working copy of the assembler by formatting a new diskette and copying the as sembler executable file onto it For example on a Macintosh II with only one diskette drive no hard disk insert the destination diskette then immediately eject it using the Eject menu
300. runtime and load memory spaces or among individual memory blocks Separate counters can be used to obtain blocks within a common section which are accessed from one memory space but mapped to separate physical memories Also counters are necessary for handling relocatable overlays at link time as the DSP linker does not support the notion of separate load and runtime counters See the examples below for more information on location counter us age The ORG directive is organized as follows ORG lt rms gt lt rlc gt lt rmp gt lt exp1 gt lt Ims gt lt llc gt lt Imp gt lt exp2 gt a MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 45 Chapter 4 SOFTWARE PROJECT MANAGEMENT or alternatively ORG lt rms gt lt rmp gt lt rce gt lt exp1 gt lt Ims gt lt Imp gt lt Ice gt lt exp2 gt lt rms gt Which memory space X Y L P or E will be used as the runtime memory space If the memory space is L any allocated datum with a value greater than the target word size will be extended to two words otherwise it is trun cated If the memory space is E then depending on the memory space qual ifier any generated words will be split into bytes one byte per word or a 16 8 bit combination rc Which runtime counter H L or default if neither H or L is specified that is associated with the rms will be used as the runtime location counter lt rmp gt Indicates the runtime physical mapp
301. ry ASL Arithmetic shift left ASR Arithmetic shift right BFIND Find leading one CLR Clear register CMP CMPG Graphics compare DEC Decrement by one EXT Sign extend half word EXTB Sign extend byte FABS Floating point absolute value FADD Floating point add FADDSUB Floating point add and subtract FCLR Clear floating point register FCMP Floating point compare FCMPG Floating point graphics FCMPM Floating point magnitude compare FCOPYS Floating point copy sign Instruction allows parallel data move 82 2 2 742 44224 DSP ASSEMBLER REFERENCE MANUAL 295 Appendix F DEVICE DEPENDENT INFORMATION FGETMAN Extract mantissa FINT Extract integer FLOAT Convert integer to floating point FLOATU Unsigned integer to floating point FLOOR Extract integer FMPY Floating point multiply FMPY FADD Floating point multiply and add FMPY FSUB Floating point multiply and subtract FMPY FADDSUB Floating point multiply and add subtract FNEG Floating point negate FSCALE Scale floating point operand FSEEDD Reciprocal approximation FSEEDR Square root reciprocal approximation FSUB Floating point subtract FTST Test floating point operand GETEXP Extract exponent INC Increment by one INT Convert floating point to integer INTRZ Convert floating point to integer with rou
302. s aS ame us 74 DSP ASSEMBLER REFERENCE MANUAL vii TABLE OF CONTENTS Continued Paragraph Page Number Title Number 6 3 6 Macros and Conditional 74 6 3 7 Structured Programming 74 Chapter 7 STRUCTURED CONTROL STATEMENTS 7 1 INSFRODUG TION rte Ud QS pd raul d doa tesa 171 7 2 STRUCTURED CONTROL DIRECTIVES 171 7 3 SYNTAX RE 172 7 3 1 BREAK SISISIDBUE vh ccna a RN 172 7 3 2 CONTINUE Statement x nn EE Ete 173 7 3 3 REOR t 174 7 3 4 s dS ense gk Re BA end ead ace MA ES 175 7 3 5 3205 5 111 PPM 176 7 3 6 REPEAT 1 177 7 3 7 WHILE Statement Pi ete eee 177 7 4 SIMPLE AND COMPOUND EXPRESSIONS 178 7 4 1 Simple 5 0 178 7 4 1 1 Condition Code Expressions 178 7 4 1 2 Operand Comparison Expressions 179 7 4 2 Compound 180 7 5 STATEMENT FORMATTING rer E ER er eer eds 180 7 5 1 Expression Formaltlirig 42s do REX RE Ram a eR ROB ERR 180 7 5 2 EO
303. s the symbol table index for the tag record associated with this struc ture n MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 275 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF Declaration Name Description long int x tagndx Tag index Unused zero filled unsigned long Size of structure union or enumeration in words Unused zero filled Figure E 22 End of Structure Auxiliary Entry E 3 4 6 5 Functions Function auxiliary entries have the format shown in Figure E 23 Note that the size of the function is given in words rather than bytes The function tag index holds the symbol table index to the begin function symbol for this function The x endndx field points to the next function symbol table entry The x Innoptr field contains a byte offset pointer within the object file to the line number entry that signals the start of this function see section E 3 3 3 Line Numbers for more information Declaration Name Description long int x tagndx Tag index long int x fsize Size of function in words Unused zero filled long int x Innoptr File pointer to line number entry long int x endndx Index of next function entry Unused zero filled Figure E 23 Function Symbol Auxiliary Entry 276 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FI
304. sed before any code or data generation The MU option must be given before any data allocation directive BSC DC DS DSM DSR or any instruction appears in the source file Negative immediate value not allowed The immediate count value for a DO or REP instruction cannot be less than zero Negative or empty DO loop not allowed The loop address given in a DO instruction must specify an address at least one greater than the current program counter value NOGS option must be used before any section The NOGS option must be activated before any explicit sections are encountered so that the assembler can use the appropriate counters for section relocation No previous function declaration A EF debugging directive was encountered without a corresponding BF directive Not enough fields specified for instruction There were no operands specified for a MOVE MOVEC MOVEM or MOVEP in struction No update mode not allowed The no update register addressing mode is not allowed for this instruction e g the LEA instruction Offset register number must be the same as address register number The explicit offset register number in an operand using post increment post dec rement or indexed by offset addressing mode Nn is different from the number specified for the address register Rn The offset register number may be omitted from these types of indirect addressing modes the assembler defaults to the ad dress register number Offs
305. sist of a sequence of source statements Any source statement can be extended to one or more lines by including the line continuation character as the last character on the line to be continued A source statement first line and any continuation lines can be a maximum of 255 characters long Upper and lower case letters are considered equivalent for assembler mnemonics and directives but are considered distinct for labels symbols directive arguments and literal strings If the source file contains horizontal tabs ASCII 09 the assembler will expand these to the next fixed tab stop located at eight character intervals column 1 9 17 unless reset using the TAB directive see Chapter 6 This is only significant if tab characters are em bedded within literal strings For more information on source input file format see Appendix G HOST DEPENDENT INFORMATION 2 2 SYMBOL NAMES Symbol names can be from one to 512 characters long The first character of a symbol must be alphabetic upper or lower case any remaining characters can be either alpha numeric A Z a z 0 9 or the underscore character Upper and lower case letters in symbols are considered distinct unless the IC option is in effect see the OPT directive Chapter 6 Valid loop 1 Invalid 1 loop ENTRY loop e aBc Certain identifiers are reserved by the assembler and cannot be used These identifiers are the upper or lower case name of any Motorola DSP proces
306. sor register See Appendix F for a list of the register names of the appropriate target processor DSP ASSEMBLER REFERENCE MANUAL 13 Chapter 2 WRITING ASSEMBLY LANGUAGE PROGRAMS 2 3 STRINGS One or more ASCII characters enclosed by single quotes constitute a literal ASCII string In order to specify an apostrophe within a literal string two consecutive apostro phes must appear where the single apostrophe is intended Strings are used as operands for some assembler directives and also can be used to a limited extent in expressions A string may also be enclosed in double quotes in which case any DEFINE directive symbols contained in the string would be expanded The double quote should be used with care inside macros since it is used as a dummy argument string operator see Chap ter 5 In that case the macro concatenation operator can be used to escape the double quoted string if desired Two strings separated by the string concatenation operator will be recognized by the assembler as equivalent to the concatenation of the two strings For example these two strings are equivalent ABC DEF ABCDEF The assembler has a substring extraction capability using the square brackets Here is an example DSP56000 3 5 56000 Substrings may be used wherever strings are valid and can be nested There are also functions for determining the length of a string and the position of one string w
307. ssembler attempted a default to short addressing which failed Either the ab solute address is too large or it needs to be forced I O short Absolute address must be either short or I O short The absolute address is too large for a short address and outside the range of valid I O short addresses Absolute address too large to use I O short Absolute address too small to use short The absolute address being forced short is outside the range of valid I O short ad dresses This usually means that I O short address has not been ones extend ed Absolute address too large to use short The absolute address value is too large to be forced short Absolute addressing mode not allowed Absolute operands are not allowed with some instructions in particular parallel XY data memory moves Address mode syntax error expected Address mode syntax error expected Address mode syntax error expected or Address mode syntax error expected comma Address mode syntax error expected comma or end of field Address mode syntax error expected offset register Address mode syntax error extra characters Address mode syntax error probably missing A syntax error was detected when scanning the source line operand and or X and Y data fields These errors may indicate omission of a source operand insufficient white space between fields or improper specification of address register indirect addressing modes Argument o
308. ssion terms which could be evaluated erroneously at link time e g forced oper ands which do not fit into the instruction word after relocation E 5 2 7 BFxxx Instruction Mask Function FBF The FBF function is generated by the assembler when the mask operand for a bitfield instruction is external The assembler passes a relocation expression to the function as an argument The linker evaluates the expression in parentheses and adjusts the associ ated instruction accordingly E 5 2 8 Local Relocatable Reference Function LRF The LRF function attempts to encapsulate more detail about a relocatable expression than is generated with other operators such as 9 and Its main purpose is to provide sufficient information for evaluating local relocatable expressions that are referenced out side a defining context For example the assembler might produce an LRF function for a reference to an underscore label that is outside its defining section The function ar guments consist of the original relocatable expression the memory space mapping value the location counter designation the defining and relocation section numbers and any buffer or overlay sequence numbers associated with the expression __ AAAOC ODROD h DB EAEACADODROREOEQLLLLCLLALAXALBGCLATMSEUOAZZT 286 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF E 5 2 9 Alternate Encodin
309. ster assigned to this symbol contains the value which caused the exit from the loop A compare instruction is produced by the assembler whenever two operands are tested in a structured statement At runtime these assembler generated instructions set the condition codes of the CCR in the case of a loop the condition codes are set repeatedly Any user written code either within or following a structured statement that references CCR directly move or indirectly conditional jump transfer should be attentive to the ef fect of these instructions Jumps or branches generated by structured control statements are forced long because the number and address of intervening instructions between a control statement and its termination are not known by the assembler The programmer may circumvent this be havior by use of the SCSJMP directive see Chapter 6 In all structured control statements except those using only a single condition code ex pression registers are used to set up the required counters and comparands In some cases these registers are effectively reserved the FOR loop uses two data registers to hold the step and target values respectively and performs no save restore operations on these registers The assembler in fact does no save restore processing in any structured control operation it simply moves the operands into appropriate registers to execute the compare See Appendix F for a list of registers used by the assembler in sup
310. struction Set Summary 295 F 1 5 Register Names and 299 F 1 6 Condition Code lt 300 F 1 7 Instruction Set Summary 301 F 1 8 Register Names and 304 i X DSP ASSEMBLER REFERENCE MANUAL MOTOROLA TABLE OF CONTENTS Paragraph Page Number Title Number F 1 9 Condition Code lt 305 Appendix G HOST DEPENDENT INFORMATION G 1 INTRODUCTIONS MMC nn 307 G 2 DOS 386 ENVIRONMENT 2 22 ext ER ee de Ren RR RSS 307 G 2 1 Hardware Requirements 307 G 2 2 5 o oracio ubt dro at eo 308 G 2 3 Source File TOM secto phe REPE POEM CERTE DIU ous 308 G 2 4 Invoking the Assembler 308 G 3 SUNOS ENVIBONNIEN E VI Ett SES 309 G 3 1 Hardware Requirements 309 G 3 2 laci T 309 G 3 3 BOUNCE File TOXUs a ve oe ede dar e dv 310 G 3 4 Invoking the Assembler 310 G 4 MACINTOSH 310 G 4 1 Hardware Requirements 311 G 4 2 e Lal ea LA o oO thd 3
311. symbol in the section were declared with GLOBAL This is useful when a section needs to be independently relocatable but data hiding is not desired If the STATIC qualifier follows the section name in the SECTION directive then all code and data defined in the section until the next ENDSEC directive are relocated in terms of the immediately enclosing section The effect with respect to relocation is as if all code and data in the section were defined within the parent section This is useful when a sec tion needs data hiding but independent relocation is not required If the LOCAL qualifier follows the section name in the SECTION directive then all sym bols defined in the section until the next ENDSEC directive are visible to the immediately enclosing section The effect is as if every symbol in the section were defined within the parent section This is useful when a section needs to be independently relocatable but data hiding within an enclosing section is not required DSP ASSEMBLER REFERENCE MANUAL 159 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES The division of a program into sections controls not only labels and symbols but also mac ros and DEFINE directive symbols Macros defined within a section are private to that section and are distinct from macros defined in other sections even if they have the same macro name Macros defined outside of sections are considered global and may be used
312. t the object file itself and is used for negotiating other components within the file There is only one file header per object file Figure E 2 shows the structure of the COFF file head er Declaration Name Description unsigned long f magic Magic number unsigned long f nscns Number of sections long int f timdat Time and date when file was created long int f symptr File pointer to the start of the symbol table long int f nsyms Number of symbol table entries unsigned long f opthdr Number of bytes in the optional header unsigned long f flags Flags see Figure E 3 Figure E 2 File Header Format The magic number is a special code indicating the target machine for the object file DSP56000 DSP96000 etc The number of sections is useful for scanning the list of section headers The date and time stamp is kept in binary form and may contain a host dependent time value The f symptr field contains a file byte offset to the beginning of the symbol table The number of symbol table entries provides an upper bound for loop ing through the symbol table and an indirect means for accessing the start of the string table The size of the optional header allows for jumping to the start of the section header list DI S AXAAALLLLLLLLLUL AZLAAAANAACLAALNINALLLLLLLLLLLLLLL AIXEAZZT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 255 Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF The f
313. t will be assigned the value of the runtime location counter after a valid base address has been established See also DS DSR EXAMPLE ORG X 100 M BUF DSM 24 CIRCULAR BUFFER MOD 24 _ ___ ___ _ ________ _ _______ __ _______________ 106 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DSR Define Reverse Carry Storage lt label gt DSR lt expression gt The DSR directive reserves a block of memory the length of which in words is equal to the value of lt expression gt If the runtime location counter is not zero this directive first ad vances the runtime location counter to a base address that is a multiple of 25 where ok gt lt expression gt An error will be issued if there is insufficient memory remaining to establish a valid base address Next the runtime location counter is advanced by the value of the integer expression in the operand field lt expression gt can have any memory space attribute The block of memory reserved is not initialized to any given value The result of lt expression gt must be an absolute integer greater than zero and cannot contain any for ward references symbols that have not yet been defined Since the DSR directive is use ful mainly for generating FFT buffers if lt expression gt is not a power of two a warning will be generated lt label gt if present will be assigned the value of the runtime location counter after a vali
314. t associated IF directive An end of conditional or end of loop directive was encountered before a matching conditional or loop structured control statement ENDIF without associated IF directive An ENDIF directive was encountered without a preceding IF conditional assembly directive ENDL without associated LOOP directive An end of loop directive was encountered before a matching loop structured con trol statement ENDM without associated MACRO directive An ENDM directive was encountered without a preceding MACRO directive ENDSEC without associated SECTION directive An ENDSEC directive was encountered without a preceding SECTION directive ENDW without associated WHILE directive An end of loop directive was encountered before a matching loop structured con trol statement EQU requires label The EQU directive must have a label to associate with the equated expression EXITM without associated MACRO directive An EXITM directive was encountered without a preceding MACRO directive Expression cannot have a negative value Some directives do not allow negative expression arguments as for example in the PAGE directive controls Expression contains forward references Some directives do not allow expression arguments which have not yet been de fined in the source as for example in the IF EQU or SET directives Expression involves incompatible memory spaces The memory space attribute is regarded by the assembler as a
315. t be forced substituting short addressing Long absolute addressing is not valid for this operation The assembler substitutes short absolute addressing Long immediate cannot be forced Long immediate data is not valid for this operation An appropriate size for the tar get DSP is substituted MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 195 Appendix ASSEMBLER MESSAGES Long PC relative address cannot be forced Long PC relative addressing is not valid for this operation An appropriate ad dressing mode short PC relative is substituted Macro expansion not active A macro must have been called prior to using the ARG or functions see Chapter 3 Macro name is the same as existing assembler directive Macro name is the same as existing assembler mnemonic The name of the macro being defined conflicts with the name of an assembler di rective or mnemonic Either use a different macro name or use the RDIRECT di rective to remove the directive or mnemonic name from the assembler lookup tables No control registers accessed using MOVE encoding A MOVEC type instruction was given but no control registers were used as oper ands The assembler substitutes a valid encoding for the operands in question No looping construct found BREAK ignored No looping construct found CONTINUE ignored A BREAK or CONTINUE structure control statement was encountered outside of any active looping construct FOR LOOP
316. table program addresses which are resolved during the linking phase The ORG directive is used to specify memory space changes mappings to phys ical memory and absolute address assignment Various memory layouts require special handling for data generation or location counter updating In the case of L memory two words of code or data are produced for each in 44 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT crement of the location counter There are many kinds of E memory depending on the characteristics of the RAM devices used In most cases E memory implies splitting the generated word into 8 bit triplets or 8 and 16 bit pairs on output and adjusting the location counter appropriately The assembler allows for two sets of program counters per memory space a set of load counters and a set of runtime counters The distinction between load and runtime counters is maintained so that the assembler can support overlays or runtime transfers of code data from one memory space to another In these cases code or data might be loaded in one memory space at a given address but then copied to a different memory space and address for execution The assembler can produce output for either absolute or relocatable overlays Motorola DSPs are capable of performing special purpose addressing on data structures suited to digital signal processing
317. te blocks are inter 5 2 2 2 2 MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 43 Chapter 4 SOFTWARE PROJECT MANAGEMENT spersed among relocatable blocks The MODE directive has no effect when the com mand line A option is active The following is an example SECTION EXAMPLE relocatable section code data generated here is relocatable MODE ABSOLUTE code data generated here is absolute it will be placed in memory at the location specified during assembly MODE REL back to relocatable code data generated here Will be combined with the previous relocatable block as long as memory space and mappings are compatible ORG P 200 code data generated here will be absolute until ENDSEC directive is found ENDSEC More information on the ORG and MODE directives can be found in ADDRESS ASSIGN MENT and under the individual directive descriptions in Chapter 6 If the STATIC qualifier follows the section name in the SECTION directive then all code and data defined in the section until the next ENDSEC directive are relocated in terms of the immediately enclosing section The effect with respect to relocation is as if all code and data in the section were defined within the parent section This is useful when a sec tion needs data hiding but independent relocation is not required 4 5 ADDRESS ASSIGNMENT The Motorola DSP assembler can support absolute address assignment at assembly time or generation of reloca
318. ted A character other than ASCII 0 through 9 either followed the decimal constant de limiter or appeared in an expression where a decimal value was expected by de fault DEFINE symbol must be a global symbol name A local label a symbol beginning with the underscore character may not be used as a DEFINE directive symbol Directive not allowed in EMI memory Any kind of buffer directive is disallowed when the runtime memory space is E MI Displacement address mode not allowed Long displacement addressing is not allowed with some instructions in particular parallel XY data memory moves Divide by zero The expression evaluator detected a divide by zero DO loop address must be in current section The loop address of a DO loop cannot fall outside the bounds of its enclosing sec tion This is particularly important in relative mode as the loop address is calculat ed based on the starting address of the section LI C LAHLADLLALCLLLLLLLLLLLIIIIONAALAALLAhL OAA LLALLAZCTAEA 4 amp E ZRADEGOXmEA AANLLLLUlLZTT 202 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Dummy argument not found The dummy argument name given as an argument to the ARG function was not found in the macro dummy argument list Duplicate destination register not allowed If the opcode operand portion of an instruction specifies a destination register the same register or portion of that register may
319. th 80386 or higher CPU 4MB of RAM and one 3 1 2 HD diskette drive MS DOS v3 0 or later Since the assembler uses all of available memory for storage of symbols and macros the optimal system configuration would have at least 4 megabytes of extended memory The assembler will make use of extended memory beyond 640K and may even use a virtual memory disk file if necessary A utility called PMINFO is supplied to provide memory re gion tuning and virtual file sizing for systems running under Microsoft Windows or other DOS extended memory managers MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 307 Appendix HOST DEPENDENT INFORMATION G 2 2 Installation Make a backup copy of the installation diskette using the DOS DISKCOPY command For example if the installation diskette is in drive A and a blank disk is in drive B issue the following command DISKCOPY B Put the distribution diskette in a safe place as a backup If the INSTALL EXE program is present on the distribution disk it can be used to install the assembler software Insert the diskette into drive A and enter the following command A INSTALL The install program will then query for information about the host system and where the software should be placed If there is no installation program create a directory where the assembler can reside and copy the executable file into it For example if a directory has been created called BIN which holds all executable files
320. the MOVE mnemonic from the mnemonic table EEE 156 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SCSJMP Set Structured Control Statement Branching Mode SCSJMP SHORT LONG NONE The SCSJMP directive is analogous to the FORCE directive but it only applies to branch es generated automatically by structured control statements see Chapter 7 There is no explicit way as with a forcing operator to force a branch short or long when it is produced by a structured control statement This directive will cause all branches resulting from subsequent structured control statements to be forced to the specified mode Just like the FORCE pseudo op errors can result if a value is too large to be forced short For relocatable code the error may not occur until the linking phase See also FORCE SCSREG A label is not allowed with this directive EXAMPLE SCSJMP SHORT force all subsequent SCS jumps short MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 157 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SCSREG Reassign Structured Control Statement Registers SCSREG __ lt srcreg gt lt dstreg gt lt tmpreg gt lt extreg gt The SCSREG directive reassigns the registers used by structured control statement SCS directives see Chapter 7 It is convenient for reclaiming default SCS registers when they are needed as application operands within a structured control constr
321. the current memory space has returned a bad value This is an internal error that should be reported to Motorola Option select error The option indicator passed to the option selection logic OPT directive was not valid This is a serious internal error that should be reported to Motorola 232 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Out of memory assembly aborted There is not enough internal memory to perform dynamic storage allocation Since the assembler keeps all working information in memory including the symbol table and macro definitions there is the possibility that memory will be exhausted if many symbols or macros are defined in a single assembly run PC relative mode select failure The mode indicator passed to the PC relative addressing mode selection logic was not valid This is a serious internal error that should be reported to Motorola Register selection failure The register number passed to the multiply mask selection logic was not valid This is a serious internal error that should be reported to Motorola Section counter sequence failure The ordering of location counter structures has been corrupted This is an internal error that should be reported to Motorola Section stack mode error The assembler expected to restore a nested section but found the section list emp ty This is an internal error that should be reported to Motorola Too many lines in source fi
322. the object file and thus must be specified before any symbols are defined in the source file Second data move destination accumulator same as operand destination accumulator The destination accumulator in a double memory read instruction is the same as the DALU accumulator specification Secondary opcode not allowed The secondary opcode field is allowed only with the FMPY instruction Section not encountered on pass 1 The section declared in a SECTION directive was not encountered during the first pass of the assembler This situation indicates an internal assembler error and should be reported to Motorola GA UA LA A LALALAAAA ZAZAZZ TO OCDDLDSDLAOLLLLLLLLLLLLLLLLLLALNT 222 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES SET requires label The SET directive must have a label in order to associate the directive argument with a symbol name SET symbol names cannot be used with GLOBAL SET symbol names cannot be used with LOCAL SET symbol names cannot be used with XDEF A symbol defined using the SET directive cannot be exported from a section using GLOBAL LOCAL or XDEF Short absolute address too large The flagged operand value is greater than the maximum short address of the target DSP Short I O absolute address too large Short I O absolute address too small The flagged operand value is outside the I O address range of the target DSP Short or I O short address expect
323. the value of the runtime location counter at the start of the directive processing Only one word of object code will be shown on the listing regardless of how large the first expression is However the runtime location counter will be advanced by the number of words generated See also BSM BSB DC EXAMPLE UNUSED BSC 2FFF LCV R FFFFFFFF FILL UNUSED EPROM EEO MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 97 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES BSM Block Storage Modulo lt label gt BSM lt expression gt lt expression gt The BSM directive causes the assembler to allocate and initialize a block of words for a modulo buffer The number of words in the block is given by the first expression which must evaluate to an absolute integer Each word is assigned the initial value of the second expression If there is no second expression an initial value of zero is assumed If the runtime location counter is not zero this directive first advances the runtime location counter to a base address that is a multiple of 2k where 25 is greater than or equal to the value of the first expression An error will occur if the first expression contains symbols that are not yet defined forward references has a value of less than or equal to zero or falls outside the range 2 lt expression lt m where m is the maximum address of the target DSP Both expressions can have any memory space attribute label i
324. time location counter value exceed avail able memory in the current memory space Structure or union tag mismatch A matching tag name could not be found for the current source level debug struc ture or union declaration Subroutine branch to loop address not allowed A BSR BScc BSSET or BSCLR instruction cannot have as its target the loop ad dress of the current DO loop Subroutine jump to loop address not allowed A JSR JScc JSSET or JSCLR instruction cannot have as its target the loop ad dress of the current DO loop SVO option must be used before any code or data generation The SVO option must be given before any data allocation directive BSC DC DS DSM DSR or any instruction appears in the source file Symbol already defined as GLOBAL Symbol already defined as LOCAL Symbol already defined as XDEF Symbol already defined as XREF The symbol used in an GLOBAL LOCAL XDEF or XREF directive has already been defined in a previous directive of the same type Symbol already defined as global A symbol specified in an XDEF directive has already been defined as global out side the current section Symbol already defined in current section A symbol specified in an XREF directive has already been defined as private within the current section 3 224 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Symbol already used as SET symbol The label has already been used in a SET directive
325. ting file is not produced debugging packages cannot use itfor source tracking Therefore the assembler uses the default assembly language file as input for source tracking Missing command line option argument The expected arguments following a command line option specifier were missing Missing source filename There must be at least one source filename specified on the command line Source file name same as listing file name Source file name same as object file name One of the source files appeared to the assembler to have the same name as the specified listing or object file The assembler aborts rather than potentially writing over a source input file E U MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 191 Appendix ASSEMBLER MESSAGES WARNINGS Absolute address involves incompatible memory spaces The memory space attribute is regarded by the assembler as a type in the same sense that high level languages use type for variables Symbols may have memory space attributes of X Y L P rogram E MI or only is fully compatible with all other attributes In this case an operand was evaluated with a different memory space attribute than that specified in the instruction Absolute address too large to use I O short long substituted The absolute address is not within the range specifying an short address even though the I O short forcing operator has been used The
326. tion e g EPROM but moved to another for execution it is a natural application for assembly language overlay seman tics Another wrinkle in bootstrap mode is that user instruction words are loaded in byte wise fashion such that the load location counter must be incremented by bytes rather M A l MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 57 Chapter 4 SOFTWARE PROJECT MANAGEMENT than words Consider the following section fragments contained in two files called SECT1 ASM and SECT2 ASM respectively SECTION SECTI ORG 1 2 1 source statements END1 ENDSEC SECTION SECT2 ORG 1 2 START2 lt source statements gt END2 ENDSEC 4 8 1 Absolute Mode Implementation In order to avoid binding addresses within the individual modules the programmer could devise a preamble file called BOOTPROJ ASM which sets the appropriate options and establishes load and runtime base addresses OPT LB increment load counter by bytes ORG 1 5100 2 5 000 set runtime RAM address bytewide load ROM address The OPT directive with the LB option indicates that the assembler should increment the load counter by the number of bytes in the target processor word This guarantees that the EPROM addresses will be correct for bytewide loading during bootstrap processing In the ORG directive the runtime location counter tagged as 1 and mapped to int
327. tion enables the assembler to check for these instructions when the program counter is within the interrupt vector bounds LB Increment load counter if different from runtime by number of bytes in DSP word to provide byte wide support for overlays in bootstrap mode This option must appear before any code or data generation LDB Use the listing file as the debug source file rather than the assembly language file The L command line option to generate a listing file must be specified for this option to take effect LOC Include local labels in the symbol table and cross reference listing Local la bels are not normally included in these listings If neither the S or CRE options are specified then this option has no effect The LOC option must be speci fied before the first symbol is encountered in the source file MC default reset Print macro calls MD default reset Print macro definitions MEX Print macro expansions MI Scan MACLIB directory paths for include files The assembler ordinarily looks for included files only in the directory specified in the INCLUDE directory or in the paths given by the I command line option If the MI option is used the assembler will also look for included files in any designated di rectories MSW default reset Issue warning on memory space incompatibilities MU Include a memory utilization report in the source listing This option must ap pear before any code or data generation
328. tion of the object file format The assembly source program listing contains the original source statements formatted for easier reading as well as additional information which is generated by the assembler Most lines in the listing correspond directly to a source statement Lines which do not cor respond directly to source statements include page headings error messages and ex pansions of macro calls or directives such as DC Define Constant see Chapter 6 The assembly listing optionally may contain a symbol table or a cross reference table of all non local symbols appearing in the program These are always printed after the end of source input or the END directive whichever occurs first if either the symbol table or cross reference table options are in effect see the OPT directive Chapter 6 The symbol table contains the name of each symbol along with its defined value The cross reference table additionally contains the assembler maintained source line number of every refer ence to every non local symbol local symbols may be included in the cross reference list ing by using the LOC option see the OPT directive Chapter 6 The format of the cross reference table is shown in Appendix D If the MU option is enabled see the OPT directive Chapter 6 the assembler generates a report of load and runtime memory utilization The report shows beginning and ending addresses of allocated memory areas along with their lengths and associat
329. to indicate that the assembly process did not proceed nor mally The number of errors is returned as an exit status when the assembler returns con trol to the host operating system 1 6 DEFINITION OF TERMS Since the Motorola DSP architectures are different from normal microprocessors the pro grammer may not be familiar with some of the terms used in this document The following discussion serves to clarify some of the concepts discussed later in this manual The Motorola DSP architecture can have as many as five separate memory spaces re ferred to as the X Y L P Program and E EMI Extended Memory Interface memory spaces L memory space is a concatenation of X and Y data memory and is considered by the assembler as a superset of the X and Y memory spaces E memory is specific to the DSP56004 processor and provides for different data representations for various memory hardware configurations The assembler will generate object code for each mem ory space but object code can only be generated for one memory space at a time The memory space and address location into which the object code generated by the as sembler will be loaded are referred to as the load memory space and load address re spectively Because the DSP architecture allows data transfers between memory spaces sometimes object code is loaded into an address of one memory space but will later be transferred to a different memory space and address before the program is ru
330. torola DSP COFF is shown in Figure E 30 It adheres to what sometimes is called the big endian approach to byte and word ordering Addr 1 Addr 2 Addr n 3 MSB 1 LSB 1 LSB Figure E 30 Motorola DSP COFF Byte Ordering E 4 3 Structure Size Fields In some of the COFF data structures there is a size field which gives the size of a block in the target processor environment For example there are several symbol table auxil iary entries that specify the size of a structure or union for debug purposes In standard COFF these sizes ordinarily are in bytes but in Motorola DSP COFF they are given in words unless otherwise indicated The use of word sizes for debug entities should be dis tinguished from file pointer offset values in the object file File pointers are indeed byte offsets within the object file that are used by utilities to process information in the object file itself E 4 4 Relocation Information In standard COFF the _ field of any given relocation record points to an entry in the symbol table corresponding to a symbol reference requiring modification When the standard COFF linker performs symbol resolution pairing symbol definitions with match ing references it updates the relocation entry to point to the symbol definition and dis 282 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix E MOTOROLA DSP OBJECT FILE FORMAT COFF cards the reference symbol When the relocation entries are pr
331. tory is searched If the lt lt string gt gt syntax is given the file is searched for only in the directories specified with the option Refer to Chapter 1 RUNNING THE ASSEMBLER A label is not allowed with this directive See also MACLIB EXAMPLE INCLUDE headers io asm Unix example INCLUDE storage mem asm MS DOS example INCLUDE lt data asm gt Do not look in current directory ____ ______ _ ________ _______ __ ___ OO DSP ASSEMBLER REFERENCE MANUAL 129 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES LIST List the Assembly LIST Print the listing from this point on The LIST directive will not be printed but the subse quent source lines will be output to the source listing The default is to print the source listing If the IL option has been specified the LIST directive has no effect when encoun tered within the source program The LIST directive actually increments a counter that is checked for a positive value and is symmetrical with respect to the NOLIST directive Note the following sequence Counter value currently 1 LIST Counter value 2 LIST Counter value 3 NOLIST Counter value 2 NOLIST Counter value 1 The listing still would not be disabled until another NOLIST directive was issued A label is not allowed with this directive See also NOLIST OPT EXAMPLE IF LISTON LIST Turn the listing back on ENDIF 58 22 __ _______________
332. ttempted The assembler out put listing will show lines after the DEFINE directive has been applied and therefore rede fined symbols will be replaced by their substitution strings unless the NODXL option in effect see the OPT directive Macros represent a special case DEFINE directive translations will be applied to the macro definition as it is encountered When the macro is expanded any active DEFINE directive translations will again be applied DEFINE directive symbols that are defined within a section will only apply to that section See the SECTION directive A label is not allowed with this directive See also UNDEF EXAMPLE If the following DEFINE directive occurred in the first part of the source program DEFINE ARRAYSIZ 10 SAMPLSIZ then the source line below DS ARRAYSIZ would be transformed by the assembler to the following DS 10 SAMPLSIZ 8 2 2 2 104 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES DS Define Storage lt label gt DS lt expression gt The DS directive reserves a block of memory the length of which in words is equal to the value of lt expression gt This directive causes the runtime location counter to be advanced by the value of the absolute integer expression in the operand field lt expression gt can have any memory space attribute The block of memory reserved is not initialized to any value The expression must be an integ
333. uct sr creg gt is ordinarily the source register for SCS data moves lt dstreg gt is the destination register tmpreg is a temporary register for swapping SCS operands extreg is an extra register for complex SCS operations With no arguments SCSREG resets the SCS registers to their default assignments The SCSREG directive should be used judiciously to avoid register context errors during SCS expansion Source and destination registers may not necessarily be used strictly as source and destination operands The assembler does no checking of reassigned regis ters beyond validity for the target processor Errors can result when a structured control statement is expanded and an improper register reassignment has occurred It is recom mended that the MEX option see the OPT directive be used to examine structured con trol statement expansion for relevant constructs to determine default register usage and applicable reassignment strategies See also OPT MEX SCSJMP A label is not allowed with this directive EXAMPLE SCSREG reassign SCS source and dest registers __ _____ _ _ ____ __ ________ __ _____________ 158 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES SECTION Start Section SECTION symbol GLOBAL STATIC LOCAL section source statements ENDSEC The SECTION directive defines the start of a section All symbols that are defined w
334. uction allows only register direct addressing Only register direct and indirect addressing allowed The instruction allows only register direct and indirect addressing Only register indirect addressing allowed The instruction allows only register indirect addressing Operation not allowed with address term Only addition and subtraction are allowed in expressions involving addresses or relative terms DI L AL AAXAXAA A LLLLLLLLLLLNLLNLXLLOILLLLLLLOLZ ZALLLLLLLL MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 219 Appendix ASSEMBLER MESSAGES Page length too small for specified top and bottom margins The sum of the top and bottom margins specified in the PAGE directive is greater than the page length 10 Page length too small to allow default bottom margin The bottom margin exceeds the page length specified in the PAGE directive PC relative address too large to use short The PC relative offset being forced short is too large to fit into the instruction word PC relative addressing mode not allowed The PC relative addressing mode is not allowed for this instruction The restriction applies for example to bit manipulation instructions and some jump type instruc tions Phasing error The value associated with a symbol has changed between pass 1 of the assembly and pass 2 This error can occur spontaneously in conjunction with other errors The assembler is designed to avoid phasing errors in general If a phasing error
335. unded by the SECTION and ENDSEC di rectives If the symbols that appear in the operand field are not defined in the section an error will be generated A label is not allowed with this directive See also SECTION XDEF XREF EXAMPLE SECTION 10 GLOBAL LOOPA will be globally accessible by other sections ENDSEC 58 2 __ _______________ 124 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES GSET Set Global Symbol to a Value label GSET expression GSET label expression The GSET directive is used to assign the value of the expression in the operand field to the label The GSET directive functions somewhat like the EQU directive However labels defined via the GSET directive can have their values redefined in another part of the pro gram but only through the use of another GSET or SET directive The GSET directive is useful for resetting a global SET symbol within a section where the SET symbol would otherwise be considered local The expression in the operand field of a GSET must be absolute and cannot include a symbol that is not yet defined no forward references are allowed See also EQU SET EXAMPLE COUNT GSET 0 INITIALIZE COUNT MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 125 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES HIMEM Set High Memory Bounds HIME
336. under score are not allowed Within each of the three dummy argument fields the dummy ar guments are separated by commas The dummy argument fields are separated by one or more blanks Macro definitions may be nested but the nested macro will not be defined until the primary macro is expanded Chapter 5 contains a complete description of macros See also DUP DUPA DUPC DUPF ENDM EXAMPLE SWAP SYM MACRO REG1 REG2 REG1 REG2 using as temp MOVE RVREG1 X0 MOVE R REG2 R REG1 MOVE XO0 R REG2 ENDM DSP ASSEMBLER REFERENCE MANUAL 135 Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIVES MODE Change Relocation Mode MODE lt ABS OLUTE REL ATIVE gt Causes the assembler to change to the designated operational mode The MODE direc tive may be given at any time in the assembly source to alter the set of location counters used for section addressing Code generated while in absolute mode will be placed in memory at the location determined during assembly Relocatable code and data are based from the enclosing section start address The MODE directive has no effect when the command line A option is issued See Chapter 4 for more information on modes sec tions and relocation A label is not allowed with this directive See also ORG EXAMPLE MODE ABS Change to absolute mode 136 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 6 ASSEMBLER SIGNIFICANT CHARACTERS AND DIRECTIV
337. ust be preceded by a blank and should be enclosed in single quotes if it contains any embedded blanks Note that if single quotes are used they must be passed to the assembler intact e g some host command interpreters will strip single quotes from around arguments The D lt sym 5 AIILLLLLLLLLLGLULLLLLLLLUOLEIT DSP ASSEMBLER REFERENCE MANUAL 3 Chapter 1 MOTOROLA DSP ASSEMBLER bol string sequence can be repeated as often as desired See the DE FINE directive Chapter 6 for more information Example ASM96000 D POINTS 16 prog asm All occurrences of the symbol POINTS in the program PROG ASM will be replaced by the string 16 lt gt gt These options allow the standard error output file to reassigned on hosts that do not support error output redirection from the command line lt errfil gt must be present as an argument but can be any legal operating system file name including an optional pathname The EA option causes the standard error stream to be written to lt errfil gt if lt errfil gt exists the output stream is appended to the end of the file The EW option also writes the standard error stream to lt errfil gt if lt errfil gt exists it is rewound truncated to zero and the output stream is written from the be ginning of the file Example ASM96000 EWerrors prog asm Redirect the standard error output to the file ERRORS If the file al ready
338. utside function domain An argument to one of the transcendental built in functions was inappropriate Arithmetic exception An internal floating point exception occurred while evaluating an expression The result of the evaluation is probably not valid 200 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Appendix ASSEMBLER MESSAGES Assembler directive or mnemonic not found An argument to the RDIRECT directive was not a recognized assembler directive or mnemonic Base argument larger than machine word size The base parameter of FLD function has a value larger than can fit in the tar get machine word Binary constant expected A character other than ASCII 0 or 1 either followed the binary constant delimiter 96 or appeared in an expression where a binary value was expected by default Bit mask cannot span more than eight bits If the first operand of a BFxxx type instruction was shifted one bit to the right until the low order bit was a 1 the resulting value must not exceed FF hexadecimal Cannot conditionally repeat write to memory A move to memory cannot be preceded by a REPcc type instruction Cannot nest section inside itself A section of a given name may not have another SECTION directive with the same name declared inside it Cannot nest symbol definitions A source level debug DEF directive was encountered inside another DEF EN DEF pair Cannot open include file The specified INCLUDE file ca
339. ve or absolute An absolute expression is one which consists only of absolute terms or is the result of two relative terms with opposing signs A relative expression consists of a relative term by itself or only in combination with abso lute terms When the assembler is operating in relative mode all address expressions must adhere to the above definitions for absolute or relative expressions This is because only these types of expressions will retain a meaningful value after program relocation For example when relative terms are paired with opposing signs the result is the difference between the two relative terms which is an absolute value However if two positive relative terms are added together the result is unpredictable based on the computed values of the terms at relocation time 3 3 EXPRESSION MEMORY SPACE ATTRIBUTE A symbol is associated with either an integer or a floating point value which is used in place of the symbol during the expression evaluation Each symbol also carries a memory space attribute of either X Y L Program EMI or None SET labels constants and float ing point expressions always have a memory space attribute of None The result of an expression will always have a memory space attribute associated with it The unary log ical negate operator relational operators and some functions return values that have a memory space attribute of N The result of an expression that has only one operand and possibly th
340. wanted a list of errors from the assembly but a full source code listing was not required This can be accomplished with the following as sembler command line asm56100 Idev null test gt test err In this example no object file is created and all errors and warnings are routed to the file test err The input file test asm is assumed to be in the current folder Note that the L option is used to send the full assembler listing to the null device The assembler can also be invoked using the MPW Commando interface Commando provides a windowed interface to command driven tools It allows the programmer to se lect command options by using mechanisms familiar to the Macintosh user such as radio buttons dialog boxes and pop up menus To use Commando enter the assembler exe cutable name followed by an ellipsis option shift keys asm56100 58 2 2 2 312 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA 22 Short 90 145 eee MB 22 23 short immediate 93 TETTE TER 24 CODES Mouse 183 71 83 Assembler JE etse dero 71 92 command line 1 II 72 93 oh eke 289 daa 72 94 Ree Na 200 VOR RS SENE MERE 23 71 81 fatal Stop ass
341. with out XDEFing in section A or XREFing in section B This scoping behavior can be turned off and on with the NONS and NS options respectively see the OPT directive Chapter 6 Sections may also be split into separate parts That is lt section name gt can be used mul tiple times with SECTION and ENDSEC directive pairs If this occurs then these separate but identically named sections can access each others symbols freely without the use of the XREF and XDEF directives If the XDEF and XREF directives are used within one section they apply to all sections with the same section name The reuse of the section name is allowed to permit the program source to be arranged in an arbitrary manner for example all statements that reserve X space storage locations grouped together but re tain the privacy of the symbols for each section 42 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA Chapter 4 SOFTWARE PROJECT MANAGEMENT 4 4 SECTIONS AND RELOCATION When the assembler operates in relative mode the default sections act as the basic grouping for relocation of code and data blocks For every section defined in the source a set of location counters is allocated for each DSP memory space These counters are used to maintain offsets of data and instructions relative to the beginning of the section At link time sections can be relocated to an absolute address loaded in a particular order or linked contiguously as specified by the programmer
342. within any section Similarly DEFINE directive symbols defined within a section are pri vate to that section and DEFINE directive symbols defined outside of any section are glo bally applied There are no directives that correspond to XDEF for macros or DEFINE symbols and therefore macros and DEFINE symbols defined in a section can never be accessed globally If global accessibility is desired the macros and DEFINE symbols should be defined outside of any section Sections can be nested to any level When the assembler encounters a nested section the current section is stacked and the new section is used When the ENDSEC directive of the nested section is encountered the assembler restores the old section and uses it The ENDSEC directive always applies to the most previous SECTION directive Nesting sections provides a measure of scoping for symbol names in that symbols defined within a given section are visible to other sections nested within it For example if section B is nested inside section A then a symbol defined in section A can be used in section B with out XDEFing in section A or XREFing in section B This scoping behavior can be turned off and on with the NONS and NS options respectively see the OPT directive this chap ter Sections may also be split into separate parts That is section name can be used mul tiple times with SECTION and ENDSEC directive pairs If this occurs then these separate but identically named se
343. xample ASM56000 B G myprog asm Assemble the file MYPROG ASM and send source file line number information to the resulting object file MYPROG CLN l lt pathname gt When the assembler encounters INCLUDE files the current directory or the directory specified in the INCLUDE directive is first searched for the file If it is not found and the I option is specified the assembler prefixes the file name and optional pathname specified in the INCLUDE directive with lt pathname gt and searches the newly formed directory pathname for the file The pathname must be a legal operating system pathname The I option may be repeated as many times as desired The directories will be searched in the order specified on the command line Example ASM56000 testprog This example uses IBM PC pathname conventions and would cause the assembler to prefix any INCLUDE files not found in the current directory with the project pathname L Istfil This option specifies that a listing file is to be created for assembler output lt 5 gt can be any legal operating system filename including an optional pathname A hyphen also may be used as an argument to indicate that the listing file should be sent to the standard output although the listing file is routed to standard output by default If a pathname is not specified the file will be created in the current directory If no filename is specified the assembler will use the
344. y the assembler 5 5 DUMMY ARGUMENT OPERATORS The assembler macro processor provides for text substitution of arguments during macro expansion In order to make the argument substitution facility more flexible the assem bler also recognizes certain text operators within macro definitions which allow for trans formations of the argument text These operators can be used for text concatenation numeric conversion and string handling 5 5 1 Dummy argument concatenation operator Dummy arguments that are intended to be concatenated with other characters must be preceded by the concatenation operator to separate them from the rest of the charac ters The argument may precede or follow the adjoining text but there must be no inter vening blanks between the concatenation operator and the rest of the characters To position an argument between two alphanumeric characters place a backslash both be fore and after the argument name For example consider the following macro definition SWAP REG MACRO REG1 REG2 swap REG1 REG2 using as temp MOVE RWMEG1 X0 MOVE R REG2 R REG1 MOVE X0 R REG2 ENDM If this macro were called with the following statement SWAP REG 0 1 then for the macro expansion the macro processor would substitute the character 0 for the dummy argument REG1 and the character 1 for the dummy argument REG2 The concatenation operator indicates to the macro processor that the substitution charac ters for the dum
345. zed NR normalized PL plus M A HM M tnl MOTOROLA DSP ASSEMBLER REFERENCE MANUAL 305 Appendix F DEVICE DEPENDENT INFORMATION e SoH G t 306 DSP ASSEMBLER REFERENCE MANUAL MOTOROLA HOST DEPENDENT INFORMATION G 1 INTRODUCTION The Motorola DSP development software runs on several host machine and operating system platforms The following sections give information on hardware requirements in stallation and other topics relating to specific host environments The descriptions below refer directly to the DSP assembler but the sections on hardware requirements and in stallation apply similarly to the DSP linker and librarian as well See the appropriate chap ters in the DSP Linker Librarian Reference Manual for more information on invocation options and processing of these utilities G 2 DOS 386 ENVIRONMENT The Motorola DSP assembler is delivered as an executable file on a high density 3 1 2 diskette It may be run from either a floppy drive or a hard disk although a hard disk is recommended The assembler will make use of extended memory if it is present and will utilize available disk space if physical memory is exhausted QG 2 4 Hardware Requirements The minimum hardware requirements for the assembler in the DOS 386 environment in clude 386 based PC or compatible wi

Download Pdf Manuals

image

Related Search

Related Contents

カメラマウント645D用 取扱説明書  Graphical user interface for an electronic device and method therefor  VIRIAT - Transports Urbains de Bourg-en  第2節 裁決における海難原因  HEC40D User Guide.indd - Advantage Bores & Reticulation  JVC Th-g41 User's Manual  ED4000, ED5000 Parts Manual  Jacques Villeglé, ou la comédie urbaine  

Copyright © All rights reserved.
Failed to retrieve file