Building and Installing Glibc

Total Page:16

File Type:pdf, Size:1020Kb

Building and Installing Glibc APPENDIX A Building and Installing Glibc THE GNU C LIBRARY, popularly known as Glibc, is the unseen force that makes GCC, most C language applications compiled with GCC on Linux systems, and all GNU /Linux systems themselves work. Any code library provides a set of func­ tions that simplify writing certain types of applications. In the case of the GNU C library, the applications facilitated by Glibc are any C programming language applications. The functions provided by Glibc range from functions as funda­ mental to C as printf () all the way to Portable Operating System Interface for Computer Environments (POSIX) functions for opening low-level network con­ nections (more about the latter later). Rebuilding and changing the library on which almost every GNU /Linux appli­ cation depends can be an intimidating thought. Luckily, it is not as problematic or complex as you might think. This chapter explains how to obtain, build, and install newer versions of the GNU C library, discusses problems that you might encounter, and also explains how to work around those problems in order to get your system(s) up and running with newer or alternate versions of the GNU C library that may be present by default on the system(s) that you are using. NOTE The most important requirement for upgrading Glibc on your system is having sufficient disk space to download and build the source code, back up files that you want to preserve in case you encounter upgrade problems, and install the new version ofGlibc. You should make sure that your system has approximately 200MB offree space in order to build and install Glibc. What Is in Glibc? Because most of the fundamental Un*x, Linux, Hurd, and *BSD applications are written in the C programming language, every Unix-like operating system needs a C library to provide the basic capabilities required in C applications and to provide the system calls that enable C applications to interface with the operat­ ing system. The GNU C library, Glibc, is the one true C library in the GNU system and most newer systems with the Linux kernel. 363 Appendix A The contents of interfaces provided as part of Glibc have evolved over time and reflect the history of Unix and relevant standards. Glibc provides support for the following standards and major Un*x variants: • Berkeley (BSD): No one with any history on Un*x systems could be unaware of the enhancements to Un*x that were provided by the Berkeley Standard Distribution. NetBSD, FreeBSD, and even Apple's Mac OS X still carry the flag of many of the networking, II 0, and usability improvements made to Un*x by the University of California at Berkeley and other academic insti­ tutions such as Carnegie Mellon University, and long-lived BSD-based Un*x implementations such as Sun Microsystems' SunOS. Glibc supports many of the capabilities found in the 4.2 BSD, 4.3 BSD, and 4.4 BSD Unix systems, and in SunOS. This heightens code compatibility with 4.4 BSD and later SunOS 4.X distributions, which themselves support almost all of the capabilities of the ISO C and POSIX standards. • ISO C: This is the C programming language standard adopted by the American National Standards Institute (ANSI) in "American National Standard X3.159-1989-ANSI C," and later by the International Standardization Organization (ISO) in their "ISO/IEC 9899:1990, Programming languages-C." This is colloquially referred to as the ISO C standard throughout the Glibc documentation. NOTE The header files and functions provided by Glibc are a superset ofthose specified in the ISO C standard. Ifyou need to write applications that strictly follow the ISO C standard, you must use the -ansi option when compiling programs with GCC. This will identify any non-ANSI constructs that you might have used accidentally. • POSIX: This is the Portable Operating System Interface for Computer Environments (ISO/IEC 9945-1:1996), later adopted by ANSI and IEEE as ANSI/IEEE Std 1003. The POSIX standard has its roots in Unix systems, and was designed as a standard that would facilitate developing appli­ cations that could be compiled across all compliant Un*x systems. The POSIX standard is a superset of the ISO C standard, adding new functions and extending existing functions in the ISO C standard. If you need to sling applicable acronyms, the Glibc manual states that Glibc is compliant with POSIX, POSIX.1, IEEE Std 1003.1 (and IEEE Std 1003.2, Draft 11), ISO/IEC 9945-1, POSIX.2, and IEEE Std 1003.2. Glibc also implements some of the functionality required in the "POSIX Shell and Utilities" standard (a.k.a. POSIX.2 or ISO/IEC 9945-2:1993). 364 Building and Installing Glibc • SYSV Unix: Un*x history began at AT&T Bell Labs. Glibc supports the majority of the capabilities specified in the AT&T "System V Interface Description" (SVID) document, which is a superset of the POSIX standard mentioned earlier. • XPG: The "X/ Open Portability Guide," published by the X/ Open Company, Ltd., is a general Un*x standard. This document specifies the requirements for systems that are intended to be conformant Unix systems. Glibc com­ plies with the "X/ Open Portability Guide, Issue 4.2," and supports all of the X/ Open System Interface (XSI) and X/ Open Unix extensions. This should not be a big surprise, since the majority of these are derived from enhance­ ments to Unix made on System V or BSD Unix, and Glibc is compliant with those. Today's Glibc has come a long way from the statically linked version l.x Glibc of the 1980s. Today, Glibc is a powerful set of shared libraries that is used on hundreds of thousands of computer systems all over the world. Like GCC, Glibc is a living testimonial to the power of open source software and the insight and philanthropy of its designers and contributors. Alternatives to Glibc The completeness and power of Glibc has an unfortunate, but not unsurprising, side effect-Glibc is big. Glibc is also a shared library, which has distinct admin­ istrative and performance improvements for desktop and server systems, but may not be desirable in all circumstances. The most notable environment in which you may not want all of the overhead of Glibc is in embedded systems running Linux. Linux is becoming incredibly popular for use in embedded sys­ tems because of its power, flexibility, and huge code base-and also because using generic Linux in an embedded system eliminates the need for operating system royalty payments. There are two popular alternatives to Glibc, both targeted for use in embed­ ded systems. The next two sections provide an overview of each of these and information about how to obtain them. These sections do not discuss how to install and use them, as this is somewhat outside the scope of a chapter dedi­ cated to Glibc. NOTE Depending upon your application and the system that you are devel­ oping for. you may also want to statically link applications in order to conserve memory and eliminate library access time on embedded systems. 365 Appendix A uClibc: The Micro C Library The micro C library, uClibc, is a C library for developing embedded Linux sys­ tems. It is much smaller than the GNU C library, but provides almost all of the functionality of Glibc without approaching its size. In most cases, porting appli­ cations from Glibc to uClibc simply requires recompiling the source code, linking against uClibc rather than Glibc. NOTE The letter u is short for the Greek letter mu, which resembles a lower­ case u and is commonly used as the abbreviation for the word micro. The capital C is an abbreviation for the word controller. uClibc is generally pro­ nounced as "yew-see-lib-see," or as "mew-see-lib-see" by the more technically obsessed. uClibc is maintained by Erik Andersen (also the author and maintainer of BusyBox, another favorite of embedded linux developers). uClibc is licensed under the GNU library General Public license. This license enables you to build and distribute commercial applications using uClibc without requiring that you provide the source code for them-you can still own your own intellectual property if youso desire. For more information about uClibc, see its home page at http:/ /www.uclibc.org/. You can obtain the source code for the latest version of uClibc there or at the uClibc project page at Freshmeat.net (http:/ /freshmeat.net/projects/uclibc/). The latest version ofuClibc was 0.9.19 at the time this book was written. New lib Newlib is an alternative to Glibc (and uClibc) that was originally developed for use in embedded systems by Cygnus Software (later acquired by Red Hat), and is still maintained by people at Red Hat (Jeff Johnston and Tom Fitzsimmons). With the purchase of Cygnus Software, Red Hat made a substantial move into the embedded development market from which they have subsequently retreated with somewhat oxymoronic statements along the lines of"You can just take your desktop or enter­ prise Red Hat distribution and scale it down for use on an embedded system." Though this is much like saying "You can just use your Cadillac as a sports car if you shave down the body and put on smaller tires," that is their position. This does not detract from the usability and value ofNewlib in embedded systems, however. For more information about Newlib, see its home page at http:/ /sources.redhat.com/newlib/. You can also download the source code for 366 Building and Installing Glibc the latest version ofNewlib there.
Recommended publications
  • Linux and Electronics
    Linux and Electronics Urs Lindegger Linux and Electronics Urs Lindegger Copyright © 2019-11-25 Urs Lindegger Table of Contents 1. Introduction .......................................................................................................... 1 Note ................................................................................................................ 1 2. Printed Circuits ...................................................................................................... 2 Printed Circuit Board design ................................................................................ 2 Kicad ....................................................................................................... 2 Eagle ..................................................................................................... 13 Simulation ...................................................................................................... 13 Spice ..................................................................................................... 13 Digital simulation .................................................................................... 18 Wings 3D ....................................................................................................... 18 User interface .......................................................................................... 19 Modeling ................................................................................................ 19 Making holes in Wings 3D .......................................................................
    [Show full text]
  • Glibc and System Calls Documentation Release 1.0
    Glibc and System Calls Documentation Release 1.0 Rishi Agrawal <[email protected]> Dec 28, 2017 Contents 1 Introduction 1 1.1 Acknowledgements...........................................1 2 Basics of a Linux System 3 2.1 Introduction...............................................3 2.2 Programs and Compilation........................................3 2.3 Libraries.................................................7 2.4 System Calls...............................................7 2.5 Kernel.................................................. 10 2.6 Conclusion................................................ 10 2.7 References................................................ 11 3 Working with glibc 13 3.1 Introduction............................................... 13 3.2 Why this chapter............................................. 13 3.3 What is glibc .............................................. 13 3.4 Download and extract glibc ...................................... 14 3.5 Walkthrough glibc ........................................... 14 3.6 Reading some functions of glibc ................................... 17 3.7 Compiling and installing glibc .................................... 18 3.8 Using new glibc ............................................ 21 3.9 Conclusion................................................ 23 4 System Calls On x86_64 from User Space 25 4.1 Setting Up Arguements......................................... 25 4.2 Calling the System Call......................................... 27 4.3 Retrieving the Return Value......................................
    [Show full text]
  • Preview Objective-C Tutorial (PDF Version)
    Objective-C Objective-C About the Tutorial Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. This is the main programming language used by Apple for the OS X and iOS operating systems and their respective APIs, Cocoa and Cocoa Touch. This reference will take you through simple and practical approach while learning Objective-C Programming language. Audience This reference has been prepared for the beginners to help them understand basic to advanced concepts related to Objective-C Programming languages. Prerequisites Before you start doing practice with various types of examples given in this reference, I'm making an assumption that you are already aware about what is a computer program, and what is a computer programming language? Copyright & Disclaimer © Copyright 2015 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book can retain a copy for future reference but commercial use of this data is not allowed. Distribution or republishing any content or a part of the content of this e-book in any manner is also not allowed without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] ii Objective-C Table of Contents About the Tutorial ..................................................................................................................................
    [Show full text]
  • Watchguard Security Report 2017 Q1
    Internet Security Report QUARTER 1, 2017 Contents Contents The Firebox® Feed provides 03 Introduction quantifiable data and trends 04 Executive Summary about hackers’ latest attacks, and 05 Firebox Feed Statistics understanding these trends can 07 Malware Trends help us improve our defenses. 08 Quarter-over-Quarter Malware Comparison 08 Malicious JavaScript Still Menaces 09 A Rise in Linux Malware 11 Evil Cross-platform Java Malware 11 Old Attacks: Malicious Perl Bot 12 A Pair of Generic Windows Trojans 12 Malicious Macros Hide in the Weeds 13 Geographic Malware Distribution 14 Zero Day vs Known Malware 15 Network Attack Trends 15 Top Network Attacks 16 Quarter-over-Quater Attack Comparison A B 16 Web Battleground Shifts to Servers 16 Web Application Attacks Move Up Reset A B 17 StageFright Returns to the Spotlight Reset 18 Geographic Attack Distribution 20 Firebox Feed Statistics: Defense Learnings 20 Malicious JavaScript in Email 20 Web-based Linux Malware 20 Brazilian Banking Malware Campaign 21 Top Security Incidents 22 The CIA Vault 7 Leaks 25 Marble Framework Defense Learnings 26 WatchGuard Threat Lab’s IoT Research Project 27 Responsible Disclosure: Ouvis C2 HD Security Camera 31 IoT Research: Defensive Learnings 32 Conclusion & Defense Highlights Internet Security Report: Q1 2017 • 2 Introduction The report for Q1 2017 Introduction includes: Have you ever wondered what Many trends and discoveries from types of cyber attacks affect small 05 the Firebox Feed to midsize businesses (SMBs) and What types of malware do we catch most often in the wild? Which network services do distributed enterprises (DEs)? Well, attackers commonly target? What are the you’ve come to the right place.
    [Show full text]
  • Red Hat Enterprise Linux 6 Developer Guide
    Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Dave Brolley William Cohen Roland Grunberg Aldy Hernandez Karsten Hopp Jakub Jelinek Developer Guide Jeff Johnston Benjamin Kosnik Aleksander Kurtakov Chris Moller Phil Muldoon Andrew Overholt Charley Wang Kent Sebastian Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Edition 0 Author Dave Brolley [email protected] Author William Cohen [email protected] Author Roland Grunberg [email protected] Author Aldy Hernandez [email protected] Author Karsten Hopp [email protected] Author Jakub Jelinek [email protected] Author Jeff Johnston [email protected] Author Benjamin Kosnik [email protected] Author Aleksander Kurtakov [email protected] Author Chris Moller [email protected] Author Phil Muldoon [email protected] Author Andrew Overholt [email protected] Author Charley Wang [email protected] Author Kent Sebastian [email protected] Editor Don Domingo [email protected] Editor Jacquelynn East [email protected] Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
    [Show full text]
  • Validated Products List, 1995 No. 3: Programming Languages, Database
    NISTIR 5693 (Supersedes NISTIR 5629) VALIDATED PRODUCTS LIST Volume 1 1995 No. 3 Programming Languages Database Language SQL Graphics POSIX Computer Security Judy B. Kailey Product Data - IGES Editor U.S. DEPARTMENT OF COMMERCE Technology Administration National Institute of Standards and Technology Computer Systems Laboratory Software Standards Validation Group Gaithersburg, MD 20899 July 1995 QC 100 NIST .056 NO. 5693 1995 NISTIR 5693 (Supersedes NISTIR 5629) VALIDATED PRODUCTS LIST Volume 1 1995 No. 3 Programming Languages Database Language SQL Graphics POSIX Computer Security Judy B. Kailey Product Data - IGES Editor U.S. DEPARTMENT OF COMMERCE Technology Administration National Institute of Standards and Technology Computer Systems Laboratory Software Standards Validation Group Gaithersburg, MD 20899 July 1995 (Supersedes April 1995 issue) U.S. DEPARTMENT OF COMMERCE Ronald H. Brown, Secretary TECHNOLOGY ADMINISTRATION Mary L. Good, Under Secretary for Technology NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY Arati Prabhakar, Director FOREWORD The Validated Products List (VPL) identifies information technology products that have been tested for conformance to Federal Information Processing Standards (FIPS) in accordance with Computer Systems Laboratory (CSL) conformance testing procedures, and have a current validation certificate or registered test report. The VPL also contains information about the organizations, test methods and procedures that support the validation programs for the FIPS identified in this document. The VPL includes computer language processors for programming languages COBOL, Fortran, Ada, Pascal, C, M[UMPS], and database language SQL; computer graphic implementations for GKS, COM, PHIGS, and Raster Graphics; operating system implementations for POSIX; Open Systems Interconnection implementations; and computer security implementations for DES, MAC and Key Management.
    [Show full text]
  • BSD – Alternativen Zu Linux
    ∗BSD { Alternativen zu Linux Karl Lockhoff March 19, 2015 Inhaltsverzeichnis I Woher kommt BSD? I Was ist BSD? I Was ist sind die Unterschiede zwischen FreeBSD, NetBSD und OpenBSD? I Warum soll ich *BSD statt Linux einsetzen? I Chuck Haley und Bill Joy entwickeln den vi in Berkeley I Bill Joy erstellt eine Sammlung von Tools, 1BSD I Unix Version 7 erscheint I 2BSD erscheint (Basis f¨urdie Weiterentwicklung PDP-11) I 3BSD erscheint (erstmalig mit einen eigenen Kernel) I 4BSD erscheint (enth¨altdas fast file system (ffs)) I Bill Joy wechselt zu Sun Microsystems I Kirk McKusick ¨ubernimmt die Entwicklung von BSD I 1978 I 1979 I 1980 I 1981 Woher kommt BSD? I 1976 I Unix Version 6 erscheint I 2BSD erscheint (Basis f¨urdie Weiterentwicklung PDP-11) I 3BSD erscheint (erstmalig mit einen eigenen Kernel) I 4BSD erscheint (enth¨altdas fast file system (ffs)) I Bill Joy wechselt zu Sun Microsystems I Kirk McKusick ¨ubernimmt die Entwicklung von BSD I Bill Joy erstellt eine Sammlung von Tools, 1BSD I Unix Version 7 erscheint I 1979 I 1980 I 1981 Woher kommt BSD? I 1976 I Unix Version 6 erscheint I 1978 I Chuck Haley und Bill Joy entwickeln den vi in Berkeley I 2BSD erscheint (Basis f¨urdie Weiterentwicklung PDP-11) I 3BSD erscheint (erstmalig mit einen eigenen Kernel) I 4BSD erscheint (enth¨altdas fast file system (ffs)) I Bill Joy wechselt zu Sun Microsystems I Kirk McKusick ¨ubernimmt die Entwicklung von BSD I Unix Version 7 erscheint I 1979 I 1980 I 1981 Woher kommt BSD? I 1976 I Unix Version 6 erscheint I 1978 I Chuck Haley und Bill Joy entwickeln den
    [Show full text]
  • Also Includes Slides and Contents From
    The Compilation Toolchain Cross-Compilation for Embedded Systems Prof. Andrea Marongiu ([email protected]) Toolchain The toolchain is a set of development tools used in association with source code or binaries generated from the source code • Enables development in a programming language (e.g., C/C++) • It is used for a lot of operations such as a) Compilation b) Preparing Libraries Most common toolchain is the c) Reading a binary file (or part of it) GNU toolchain which is part of d) Debugging the GNU project • Normally it contains a) Compiler : Generate object files from source code files b) Linker: Link object files together to build a binary file c) Library Archiver: To group a set of object files into a library file d) Debugger: To debug the binary file while running e) And other tools The GNU Toolchain GNU (GNU’s Not Unix) The GNU toolchain has played a vital role in the development of the Linux kernel, BSD, and software for embedded systems. The GNU project produced a set of programming tools. Parts of the toolchain we will use are: -gcc: (GNU Compiler Collection): suite of compilers for many programming languages -binutils: Suite of tools including linker (ld), assembler (gas) -gdb: Code debugging tool -libc: Subset of standard C library (assuming a C compiler). -bash: free Unix shell (Bourne-again shell). Default shell on GNU/Linux systems and Mac OSX. Also ported to Microsoft Windows. -make: automation tool for compilation and build Program development tools The process of converting source code to an executable binary image requires several steps, each with its own tool.
    [Show full text]
  • UBS Release Notes Version 8.10
    Uniplex Release Notes Version 8.10 Manual version: 8.10 Document version: V1.0 COPYRIGHT NOTICE Copyright© 1987-1995 Uniplex Limited. All rights reserved. Unpublished - rights reserved under Copyright Laws. Licensed software and documentation. Use, copy and disclosure restricted by license agreement. ©Copyright 1989-1992, Bitstream Inc. Cambridge, MA. All rights reserved. U.S. Patent No. 5,009,435. ©Copyright 1991-1992, Bitstream Inc. Cambridge, MA. Portions copyright by Data General Corporation (1993) ©Gradient Technologies, Inc. 1991, 1992. ©Hewlett Packard 1988, 1990. Copyright© Harlequin Ltd. 1989, 1990, 1991, 1992. All rights reserved. ©Hewlett-Packard Company 1987-1993. All rights reserved. OpenMail (A.01.00) Copyright© Hewlett-Packard Company 1989, 1990, 1992. Portion Copyright Informix Software, Inc. IXI X.desktop Copyright© 1988-1993, IXI Limited, Cambridge, England. IXI Deskterm Copyright© 1988-1993, IXI Limited, Cambridge, England. Featuring MultiView DeskTerm Copyright© 1990-1992 JSB Computer Systems Ltd. Word for Word, Copyright, Mastersoft, Inc., 1986-1993. Tel: (602)-948-4888 Font Data copyright© The Monotype Corporation Plc 1989. All rights reserved. Copyright© 1990-1991, NBI, Inc. All rights reserved. Created using Netwise SystemTM software. Copyright 1984-1992 Soft-Art, Inc. All rights reserved. Copyrighted work incorporating TypeScalerTM, Copyright© Sun Microsystems Inc. 1989, 1987. All rights reserved. Copyright© VisionWare Ltd. 1989-1992. All Rights Reserved. ©1987-1993 XVT Software Inc. All rights reserved. Uniplex is a trademark of Redwood International Limited in the UK and other countries. onGO, Uniplex II PlusTM, Uniplex Advanced Office SystemTM, Uniplex Advanced GraphicsTM, Uniplex Business SoftwareTM, Uniplex DOSTM, Uniplex DatalinkTM and Uniplex WindowsTM are trademarks of Uniplex Limited. PostScript® is a registered trademark of Adobe Systems Inc.
    [Show full text]
  • Risc I: a Reduced Instruction Set Vlsi Computer
    RISC I: A REDUCED INSTRUCTION SET VLSI COMPUTER DAVID A. PATTERSON and CARLO H. SEQUIN Computer Science Division University of California Berkeley, California ABSTRACT to implement CISC is the best way to use this “scarce” resource. The Reduced Instruction Set Computer (RISC) Project investigates an alternatrve to the general trend toward computers wrth increasingly complex instruction sets: With a The above findings led to the Reduced Instruction Set proper set of instructions and a corresponding architectural Computer (RISC) Project. The purpose of the project is design, a machine wrth a high effective throughput can be to explore alternatives to the general trend toward achieved. The simplicity of the instruction set and addressing architectural complexity. The hypothesis is that by modes allows most Instructions to execute in a single machine cycle, and the srmplicity of each instruction guarantees a short reducing the instruction set, VLSI architecture can be cycle time. In addition, such a machine should have a much designed that uses the scarce resources more effectively shorter design trme. than CISC. We also expect this approach to reduce design time, the number of design errors, and the This paper presents the architecture of RISC I and its novel execution time of individual instructions. hardware support scheme for procedure call/return. Overlapprng sets of regrster banks that can pass parameters directly to subrouttnes are largely responsible for the excellent Our initial version of such a computer is called RISC I. performance of RISC I. Static and dynamtc comparisons To meet our goals of simplicity and effective single-chip between this new architecture and more traditional machines implementation, we placed the following “constraints” are given.
    [Show full text]
  • FPGA BASED RECONFIGURABLE BODY AREA NETWORK USING Nios II and Uclinux
    FPGA BASED RECONFIGURABLE BODY AREA NETWORK USING Nios II AND uClinux A Thesis Submitted to the College of Graduate Studies and Research in Partial Fulfillment of the Requirements for the Degree of Master of Science in the Department of Electrical and Computer Engineering University of Saskatchewan by Anthony Voykin Saskatoon, Saskatchewan, Canada c Copyright Anthony Voykin, April 2013. All rights reserved. Permission to Use In presenting this thesis in partial fulfillment of the requirements for a Postgraduate degree from the University of Saskatchewan, it is agreed that the Libraries of this University may make it freely available for inspection. Permission for copying of this thesis in any manner, in whole or in part, for scholarly purposes may be granted by the professors who supervised this thesis work or, in their absence, by the Head of the Department of Electrical and Computer Engineering or the Dean of the College of Graduate Studies and Research at the University of Saskatchewan. Any copying, publication, or use of this thesis, or parts thereof, for financial gain without the written permission of the author is strictly prohibited. Proper recognition shall be given to the author and to the University of Saskatchewan in any scholarly use which may be made of any material in this thesis. Request for permission to copy or to make any other use of material in this thesis in whole or in part should be addressed to: Head of the Department of Electrical and Computer Engineering 57 Campus Drive University of Saskatchewan Saskatoon, Saskatchewan, Canada S7N 5A9 i Acknowledgments I would like to thank my advisors Professor Ron Bolton and Professor Francis Bui for providing me with guidance and support necessary to complete my thesis work.
    [Show full text]
  • Computer Architecture and Assembly Language
    Computer Architecture and Assembly Language Gabriel Laskar EPITA 2015 License I Copyright c 2004-2005, ACU, Benoit Perrot I Copyright c 2004-2008, Alexandre Becoulet I Copyright c 2009-2013, Nicolas Pouillon I Copyright c 2014, Joël Porquet I Copyright c 2015, Gabriel Laskar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being just ‘‘Copying this document’’, no Front-Cover Texts, and no Back-Cover Texts. Introduction Part I Introduction Gabriel Laskar (EPITA) CAAL 2015 3 / 378 Introduction Problem definition 1: Introduction Problem definition Outline Gabriel Laskar (EPITA) CAAL 2015 4 / 378 Introduction Problem definition What are we trying to learn? Computer Architecture What is in the hardware? I A bit of history of computers, current machines I Concepts and conventions: processing, memory, communication, optimization How does a machine run code? I Program execution model I Memory mapping, OS support Gabriel Laskar (EPITA) CAAL 2015 5 / 378 Introduction Problem definition What are we trying to learn? Assembly Language How to “talk” with the machine directly? I Mechanisms involved I Assembly language structure and usage I Low-level assembly language features I C inline assembly Gabriel Laskar (EPITA) CAAL 2015 6 / 378 I Programmers I Wise managers Introduction Problem definition Who do I talk to? I System gurus I Low-level enthusiasts Gabriel Laskar (EPITA) CAAL
    [Show full text]