Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 7 Linear Assembly. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 2 Learning Objectives Comparison of programming.

Similar presentations


Presentation on theme: "Chapter 7 Linear Assembly. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 2 Learning Objectives Comparison of programming."— Presentation transcript:

1 Chapter 7 Linear Assembly

2 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 2 Learning Objectives Comparison of programming techniques. Comparison of programming techniques. How to write Linear Assembly. How to write Linear Assembly. Interfacing Linear Assembly with C. Interfacing Linear Assembly with C. Assembly optimiser tool. Assembly optimiser tool.

3 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 3Introduction With the assembly optimiser, optimisation for loops can be made very simple. With the assembly optimiser, optimisation for loops can be made very simple. Linear assembly takes care of the pipeline structure and generates highly parallel assembly code automatically. Linear assembly takes care of the pipeline structure and generates highly parallel assembly code automatically. The performance of the assembly optimiser can easily reach the performance of hand written assembly code. The performance of the assembly optimiser can easily reach the performance of hand written assembly code.

4 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 4 100%High ASM Hand Optimised Comparison of Programming Techniques * Typical efficiency vs. hand optimized assembly. SourceEfficiency*Effort 80 - 100% C C ++ Low Optimising Compiler 95 - 100% Linear ASM Med Assembly Optimiser

5 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 5 Writing in Linear Assembly Linear assembly is similar to hand assembly, except: Linear assembly is similar to hand assembly, except: Does not require NOPs to fill empty delay slots. Does not require NOPs to fill empty delay slots. The functions units do not need to be specified. The functions units do not need to be specified. Grouping of instructions in parallel is performed automatically. Grouping of instructions in parallel is performed automatically. Accepts symbolic variable names. Accepts symbolic variable names. ZEROsum loopLDH*p_to_a, a LDH*p_to_b, b MPYa, b, prod ADDsum, prod, sum SUBB0, 1, B0 B loop

6 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 6 How to Write Code in Linear Assembly File extension: File extension: Use the.sa extension to specify the file is written in linear assembly. Use the.sa extension to specify the file is written in linear assembly. How to write code: How to write code: _sa_Function.cproc ZEROsum loopLDH*pm++, m LDH*pn++, n MPYm, n, prod ADDsum, prod, sum [count]SUBcount, 1, count [count]SUBcount, 1, count B loop.return sum.endproc.cproc defines the beginning of the code.return specifies the return value.endproc defines the end of the linear assembly code NO NOPs required NO parallel instructions required NO functional units specified NO registers required

7 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 7 Passing and Returning Arguments pm and pn are two pointers declared in the C code that calls the linear assembly function. pm and pn are two pointers declared in the C code that calls the linear assembly function. The following function prototype in C calls the linear assembly function: The following function prototype in C calls the linear assembly function: int y = dotp (short* a, short* x, int count) The linear assembly function receives the arguments using.cproc: The linear assembly function receives the arguments using.cproc: _dotp.cprocpm, pn, count....return y.endproc

8 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 8 Declaring the Symbolic Variables All the symbolic registers except those used as arguments are declared as follows: All the symbolic registers except those used as arguments are declared as follows:.regpm, pn, m, n, prod, sum The assembly optimiser will attempt to assign all these values to registers. The assembly optimiser will attempt to assign all these values to registers.

9 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 9 Complete Linear Assembly Code Note: Linear assembly performs automatic return to the calling function. Note: Linear assembly performs automatic return to the calling function. _dotp.cproc pm, pn, count.reg m, n, prod, sum ZEROsum loopLDH*pm++, m LDH*pn++, n MPYm, n, prod ADDsum, prod, sum [count]SUBcount, 1, count [count]SUBcount, 1, count B loop.return sum.endproc

10 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 10 Function calls in Linear Assembly In linear assembly you can call other functions written in C, linear assembly or assembly. In linear assembly you can call other functions written in C, linear assembly or assembly. To do this the.call directive is used: To do this the.call directive is used: Function1.sa _function1.cproc a, b.reg y, float1 MPYa,b,y.call float1 = _fix_to_float(y).return.endproc Fix_to_float.sa _fix_to_float.cproc fix.reg float1 INTSP fix, float1.return float1.endproc Note: Branch out of a linear assembly routine is not allowed. Note: Branch out of a linear assembly routine is not allowed.

11 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 11 Invoking the Assembly Optimiser The development tools recognise the linear assembler code by the file extension.sa. The development tools recognise the linear assembler code by the file extension.sa. The assembly optimiser uses the same options as the optimising C compiler. The assembly optimiser uses the same options as the optimising C compiler. Note: In CCS you can change the options of each file individually by right clicking on the file in the project view and selecting File Specific Options…. Note: In CCS you can change the options of each file individually by right clicking on the file in the project view and selecting File Specific Options….

12 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 12 Linear Assembly Examples The following chapters have code written in linear assembly: The following chapters have code written in linear assembly: \Code\Chapter 15 - Infinite Impulse Response Filters \Code\Chapter 15 - Infinite Impulse Response Filters \Code\Chapter 17 - Goertzel Algorithm \Code\Chapter 17 - Goertzel Algorithm For more details on Interfacing C and Assembly see Chapter 11. For more details on Interfacing C and Assembly see Chapter 11.

13 Chapter 7 Linear Assembly - End -


Download ppt "Chapter 7 Linear Assembly. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004 Chapter 7, Slide 2 Learning Objectives Comparison of programming."

Similar presentations


Ads by Google