Chapter 11 Interfacing C and Assembly Code

Slides:



Advertisements
Similar presentations
Chapter 7 Linear Assembly
Advertisements

Chapter 11 Interfacing C and Assembly Code
Etter/Ingber Engineering Problem Solving with C Fundamental Concepts Chapter 4 Modular Programming with Functions.
The University of Adelaide, School of Computer Science
Templates in C++. Generic Programming Programming/developing algorithms with the abstraction of types The uses of the abstract type define the necessary.
TMS320C6713 Assembly Language (cont’d). Module 1 Exam (solution) 1. Functional Units a. How many can perform an ADD? Name them. a. How many can perform.
MIPS Calling Convention Chapter 2.7 Appendix A.6.
Computer Architecture CSCE 350
Procedures II (1) Fall 2005 Lecture 07: Procedure Calls (Part 2)
Functions Functions and Parameters. History A function call needs to save the registers in use The called function will use the registers The registers.
Chapter 7 Process Environment Chien-Chung Shen CIS, UD
Loops, and sub-routines Interrupts Can be very useful in control applications particularly when the microprocessor must perform two tasks apparently.
Constructors & An Introduction to Methods. Defining Constructor – Car Example Public class car { String Model; double speed; String colour; { Public Car.
1 Function Calls Professor Jennifer Rexford COS 217 Reading: Chapter 4 of “Programming From the Ground Up” (available online from the course Web site)
Chapter 12: High-Level Language Interface. Chapter Overview Introduction Inline Assembly Code C calls assembly procedures Assembly calls C procedures.
1 Homework Reading –PAL, pp , Machine Projects –Finish mp2warmup Questions? –Start mp2 as soon as possible Labs –Continue labs with your.
Chapter 11 Interfacing C and Assembly Code. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2002 Chapter 11, Slide 2 Learning Objectives 
Chapter 7 Linear Assembly. Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2002 Chapter 7, Slide 2 Learning Objectives  Comparison of programming.
Computer Architecture and Operating Systems CS 3230 :Assembly Section Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Introduction to Subroutines. All the combinations in which a subroutine can be written 1. The subroutine may be: a. Internal or b. External 2. The type.
Subroutines, parameters and the stack Bryan Duggan.
Assembly Language for x86 Processors 7th Edition Chapter 13: High-Level Language Interface (c) Pearson Education, All rights reserved. You may modify.
CE-2810 Dr. Mark L. Hornick 1 Mixing C and assembly Safety goggles on!
7-Nov Fall 2001: copyright ©T. Pearce, D. Hutchinson, L. Marshall Oct lecture23-24-hll-interrupts 1 High Level Language vs. Assembly.
INTRODUCTION TO CLASSES & OBJECTS CREATING CLASSES USING C#
Chapter 7 Process Environment Chien-Chung Shen CIS/UD
Assembly Language with GCC
Chapter 8 Exercises.
Chapter 7: User-Defined Functions II
Chapter 7 Linear Assembly
C Functions -Continue…-.
The compilation process
Help for Lab. 1 Subroutines calling Subroutines
Homework Reading Machine Projects Labs PAL, pp ,
CS 3305 System Calls Lecture 7.
Chapter 5 Conclusion CIS 61.
CSC113: Computer Programming (Theory = 03, Lab = 01)
High-Level Language Interface
Chapter 7 Subroutines Dr. A.P. Preethy
In this lecture Global variables Local variables System stack
Chapter 5 - Functions Outline 5.1 Introduction
LHO 15 C with assembly language
Stack Memory 2 (also called Call Stack)
Assembly Language Programming II: C Compiler Calling Sequences
Encapsulation and Constructors
Chapter 10 Interrupts.
The University of Adelaide, School of Computer Science
EECE.3170 Microprocessor Systems Design I
by Richard P. Paul, 2nd edition, 2000.
EECE.3170 Microprocessor Systems Design I
EECE.3170 Microprocessor Systems Design I
CS2011 Introduction to Programming I Methods (II)
Problem Solving Skill Area 305.1
Chapter 3 – Introduction to C# Programming
EECE.3170 Microprocessor Systems Design I
Threads Chapter 5 2/17/2019 B.Ramamurthy.
Programs and Classes A program is made up from classes
Chapter 9: Value-Returning Functions
Threads Chapter 5 2/23/2019 B.Ramamurthy.
Still Chapter 2 (Based on Silberchatz’s text and Nachos Roadmap.)
CHAPTER 2 Arrays and Vectors.
Scope Rules Of Variables
CHAPTER 2 Arrays and Vectors.
The C Language: Intro.
Chapter 9: Pointers and String
Where is all the knowledge we lost with information? T. S. Eliot
IPC144 Introduction to Programming Using C Week 5 – Lesson 1
Blackfin Syntax Moves and Adds
Blackfin Syntax Stores, Jumps, Calls and Conditional Jumps
Presentation transcript:

Chapter 11 Interfacing C and Assembly Code

Learning Objectives Different methods exist for interfacing C and assembly code: Calling assembly from C. Interrupt calling assembly routine. Intrinsics. Programming requirements when interfacing code.

Introduction This chapter shows how to interface C and assembly and how to use intrinsics. As a general rule the code written in C is used for initialisation and for non-critical (in terms of speed or size) code. Critical code (in terms of speed/size) can be written in assembly or linear assembly. There are three different ways to interface C and assembly code: (1) C code call to the assembly function. (2) An interrupt can call an assembly function. (3) Call an assembly instruction using intrinsics.

Calling Assembly from C main () { y = asmFunction (a, b); } _asmFunction b b3 The C and assembly functions share the same resources (e.g. registers). The C and assembly functions may exchange data. Therefore code interfacing requires a means of handing-off data and control info and some rules of handling shared registers.

Calling Assembly from C main_c.c int asm_Function (short, short); short x = 0x4000, y = 0x2000; int z; void main (void) { z = asm_Function (x, y); } Use “_” underscore in assembly for all variables or functions declared in C. Labels also need to be global. asm_Function.c int asm_Function (short a, short b) { int y; y = (a * b) << 1; return y; } asm_Function.asm .global _asm_Function

Passing Arguments between C and Assembly arg1/r_val arg3 arg5 arg7 arg9 ret addr arg2 arg4 arg6 arg8 arg10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 The following registers are used to pass and return variables when calling an assembly routine from C.

Passing Arguments between C and Assembly 0x4000 0x2000 4 5 6 7 8 A B Before assembly call. After return from assembly call. 0x8000 0x2000 4 5 6 7 8

Passing Arguments between C and Assembly Problem: The C code will use some or all of the registers. The assembly code may also require the use of some or all registers. If nothing is done then on return to the C code some of the values may have been destroyed by the assembly code.

Passing Arguments between C and Assembly Solution: Both the C code and assembly code are responsible for saving some registers if they need to use them. A B 1 2 3 C code automatically saves these registers 4 5 6 7 8 9 Assembly code must save these registers - responsibility of the programmer 10 11 12 13 14 15

Interfacing C and Assembly Examples Setup code written in C and interfaced with critical code written in assembly can be found in the following chapters: \Code\Chapter 14 - Finite Impulse Response Filters \Code\Chapter 16 - Adaptive Filters Setup code written in C and interfaced with critical code written in linear assembly can be found in the following chapters: \Code\Chapter 15 - Infinite Impulse Response Filters \Code\Chapter 17 - Goertzel Algorithm

Chapter 11 Interfacing C and Assembly Code - End -