More in-class activities / questions

Size: px
Start display at page:

Download "More in-class activities / questions"

Transcription

1 Reading Responses 6 Yes, 1 No More often, reiew questions? Current Lab Format Yes: 6 yes, 3 No Maybe a 5-min introduction to help get started? More in-class actiities / questions Yes: 5, No: 1 Long Slides are boring / hard to follow: 3 BTW, no luck with Flash lab on linux

2

3 Union Allocation Allocate according to largest element Can only use ones field at a time union U1 { c int i[2]; i[0] i[1] double ; } *up; up+0 up+4 up+8 struct S1 { int i[2]; double ; } *sp; c 3 bits i[0] i[1] 4 bits sp+0 sp+4 sp+8 sp+16 sp+24

4 Using Union to Access Bit Patterns typedef union { float f; unsigned u; } bit_float_t; u f 0 4 float bit2float(unsigned u) { bit_float_t arg; arg.u = u; return arg.f; } unsigned float2bit(float f) { bit_float_t arg; arg.f = f; return arg.u; } Same as (float) u? Same as (unsigned) f?

5 Summary Arrays in C Contiguous allocation of memory Aligned to satisfy eery element s alignment requirement Pointer to first element No bounds checking Structures Allocate bytes in order declared Pad in middle and at end to satisfy alignment Unions Oerlay declarations Way to circument type system

6

7 Alignment Aligned Data Primitie data type requires K bytes Address must be multiple of K Required on some machines; adised on IA32 treated differently by IA32 Linux, x86-64 Linux, and Windows! Motiation for Aligning Data Memory accessed by (aligned) chunks of 4 or 8 bytes (system dependent) Inefficient to load or store datum that spans quad word boundaries Virtual memory ery tricky when datum spans 2 pages Compiler Inserts gaps in structure to ensure correct alignment of fields

8 Specific Cases of Alignment (IA32) 1 byte: char, no restrictions on address 2 bytes: short, lowest 1 bit of address must be bytes: int, float, char *, lowest 2 bits of address must be bytes: double, Windows (and most other OS s & instruction sets): lowest 3 bits of address must be Linux: lowest 2 bits of address must be 00 2 i.e., treated the same as a 4-byte primitie data type 12 bytes: long double Windows, Linux: lowest 2 bits of address must be 00 2 i.e., treated the same as a 4-byte primitie data type

9 Satisfying Alignment with Structures Within structure: Must satisfy element s alignment requirement Oerall structure placement Each structure has alignment requirement K K = Largest alignment of any element struct S1 { int i[2]; double ; } *p; Initial address & structure length must be multiples of K Example (under Windows or x86-64): K = 8, due to double element c 3 bytes i[0] i[1] 4 bytes p+0 p+4 p+8 p+16 p+24 Multiple of 4 Multiple of 8 Multiple of 8 Multiple of 8

10 Different Alignment Conentions x86-64 or IA32 Windows: K = 8, due to double element struct S1 { int i[2]; double ; } *p; c 3 bytes i[0] i[1] 4 bytes p+0 p+4 p+8 p+16 p+24 c 3 bytes i[0] i[1] p+0 p+4 p+8 p+12 p+20 IA32 Linux K = 4; double treated like a 4-byte data type

11 Saing Space Put large data types first struct S1 { int i[2]; double ; } *p; struct S2 { double ; int i[2]; } *p; Effect (example x86-64, both hae K=8) c 3 bytes i[0] i[1] 4 bytes p+0 p+4 p+8 p+16 p+24 i[0] i[1] c p+0 p+8 p+16

12 Arrays of Structures Satisfy alignment requirement for eery element struct S2 { double ; int i[2]; } a[10]; a+0 a[0] a[1] a[2] a+24 a+48 a+36 i[0] i[1] c a+24 a+32 a+40 7 bytes a+48

13 Accessing Array Elements Compute array offset 12i Compute offset 8 with structure Assembler gies offset a+8 Resoled during linking a+0 a[0] struct S3 { short i; float ; short j; } a[10]; a[i] a+12i i 2 bytes j 2 bytes a+12i a+12i+8 short get_j(int idx) { return a[idx].j; } # %eax = idx leal (%eax,%eax,2),%eax # 3*idx moswl a+8(,%eax,4),%eax

14 Offset per field, total size, and alignment requirement for IA32 struct { int i; int j; char d; } P1; struct { short w[3]; char c[3]; } P2; struct { short w[3]; char *c[3]; } P3;

15 Offset per field, total size, and alignment requirement for IA32 P Total = 16 Alignment = 4 P2 0 6 Total = 10 Alignment = 2 P3 0 8 Total = 20 Alignment = 4

Basic Data Types. Lecture 6A Machine-Level Programming IV: Structured Data. Array Allocation. Array Access Basic Principle

Basic Data Types. Lecture 6A Machine-Level Programming IV: Structured Data. Array Allocation. Array Access Basic Principle Lecture 6 Machine-Level Programming IV: Structured Data Topics rrays Structs Unions Basic Data Types Integral Stored & operated on in general registers Signed vs. unsigned depends on instructions used

More information

CS241 Computer Organization Spring Data Alignment

CS241 Computer Organization Spring Data Alignment CS241 Computer Organization Spring 2015 Data Alignment 3-26 2015 Outline! Data Alignment! C: pointers to functions! Memory Layout Read: CS:APP2 Chapter 3, sections 3.8-3.9 Quiz next Thursday, April 2nd

More information

Data Structures in Memory!

Data Structures in Memory! Data Structures in Memory! Arrays One- dimensional Mul/- dimensional (nested) Mul/- level Structs Alignment Unions 1 What is memory again? 2 Data Structures in Assembly Arrays? Strings? Structs? 3 Array

More information

CS429: Computer Organization and Architecture

CS429: Computer Organization and Architecture CS429: Computer Organization and Architecture Dr. Bill Young Department of Computer Sciences University of Texas at Austin Last updated: March 5, 2018 at 05:33 CS429 Slideset 11: 1 Alignment CS429 Slideset

More information

Machine-level Programs Data

Machine-level Programs Data Computer Systems Machine-level Programs Data Han, Hwansoo rray llocation Basic Principle T [L]; rray of data type T and length L Contiguously allocated region of L * sizeof(t) bytes in memory char string[12];

More information

Computer Systems CEN591(502) Fall 2011

Computer Systems CEN591(502) Fall 2011 Computer Systems CEN591(502) Fall 2011 Sandeep K. S. Gupta Arizona State University 9 th lecture Machine-Level Programming (4) (Slides adapted from CSAPP) Announcements Potentially Makeup Classes on Sat

More information

Machine-Level Programming IV: Structured Data

Machine-Level Programming IV: Structured Data Machine-Level Programming IV: Structured Data Topics Arrays Structs Unions Basic Data Types Integral 2 Stored & operated on in general registers Signed vs. unsigned depends on instructions used Intel GAS

More information

Assembly IV: Complex Data Types. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Assembly IV: Complex Data Types. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University ssembly IV: Complex Data Types Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Basic Data Types Integer Stored & operated on in general registers

More information

Basic Data Types The course that gives CMU its Zip! Machine-Level Programming IV: Data Feb. 5, 2008

Basic Data Types The course that gives CMU its Zip! Machine-Level Programming IV: Data Feb. 5, 2008 Machine-Level Programming IV: Data Feb. 5, 2008 class07.ppt 15-213 The course that gives CMU its Zip! Structured Data rrays Structs Unions Basic Data Types Integral Stored & operated on in general registers

More information

Roadmap. Java: Assembly language: OS: Machine code: Computer system:

Roadmap. Java: Assembly language: OS: Machine code: Computer system: Roadmap C: car *c = malloc(sizeof(car)); c->miles = 100; c->gals = 17; float mpg = get_mpg(c); free(c); Assembly language: Machine code: Computer system: get_mpg: pushq movq... popq ret %rbp %rsp, %rbp

More information

Integral. ! Stored & operated on in general registers. ! Signed vs. unsigned depends on instructions used

Integral. ! Stored & operated on in general registers. ! Signed vs. unsigned depends on instructions used Basic Data Types Machine-Level Programming IV: Structured Data Topics! rrays! Structs! Unions Integral! Stored & operated on in general registers! Signed vs. unsigned depends on instructions used Intel

More information

Basic Data Types The course that gives CMU its Zip! Machine-Level Programming IV: Structured Data Sept. 18, 2003.

Basic Data Types The course that gives CMU its Zip! Machine-Level Programming IV: Structured Data Sept. 18, 2003. Machine-Level Programming IV: Structured Data Sept. 18, 2003 class08.ppt 15-213 The course that gives CMU its Zip! Topics rrays Structs Unions Basic Data Types Integral Stored & operated on in general

More information

CISC 360 Midterm Exam - Review Alignment

CISC 360 Midterm Exam - Review Alignment CISC 360 Midterm Exam - Review Alignment Michela Taufer October 14, 2008 Powerpoint Lecture Notes for Computer Systems: A Programmer's Perspective, R. Bryant and D. O'Hallaron, Prentice Hall, CS:APP 2003

More information

Giving credit where credit is due

Giving credit where credit is due CSCE 230J Computer Organization Machine-Level Programming IV: Structured Data Giving credit where credit is due Most of slides for this lecture are based on slides created by Drs. Bryant and O Hallaron,

More information

Giving credit where credit is due

Giving credit where credit is due CSCE 230J Computer Organization Machine-Level Programming IV: Structured Data Dr. Steve Goddard goddard@cse.unl.edu http://cse.unl.edu/~goddard/courses/csce230j Giving credit where credit is due Most of

More information

CISC 360. Machine-Level Programming IV: Structured Data Sept. 24, 2008

CISC 360. Machine-Level Programming IV: Structured Data Sept. 24, 2008 CISC 360 Machine-Level Programming IV: Structured Data Sept. 24, 2008 Basic Data Types 2 CISC 360, Fa09 Array Allocation char string[12]; int val[5]; x x + 12 double a[4]; x x + 4 x + 8 x + 12 x + 16 x

More information

Assembly IV: Complex Data Types. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Assembly IV: Complex Data Types. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University ssembly IV: Complex Data Types Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Basic Data Types Integer Stored & operated on in general registers

More information

Last time. Last Time. Last time. Dynamic Array Multiplication. Dynamic Nested Arrays

Last time. Last Time. Last time. Dynamic Array Multiplication. Dynamic Nested Arrays Last time Lecture 8: Structures, alignment, floats Computer Architecture and Systems Programming (252-0061-00) Timothy Roscoe Herbstsemester 2012 %rax %rbx %rcx %rdx %rsi %rdi %rsp Return alue Callee saed

More information

MACHINE-LEVEL PROGRAMMING IV: Computer Organization and Architecture

MACHINE-LEVEL PROGRAMMING IV: Computer Organization and Architecture MACHINE-LEVEL PROGRAMMING IV: DATA CS 045 Computer Organization and Architecture Prof. Donald J. Patterson Adapted from Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition

More information

Machine-Level Prog. IV - Structured Data

Machine-Level Prog. IV - Structured Data Machine-Level Prog. IV - Structured Data Today! rrays! Structures! Unions Next time! Buffer overflow, x86-64 Fabián E. Bustamante, 2007 Basic data types! Integral Stored & operated on in general registers

More information

Assembly IV: Complex Data Types

Assembly IV: Complex Data Types ssembly IV: Complex Data Types Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu SSE2030: Introduction to Computer Systems, Spring 2018, Jinkyu Jeong

More information

Page 1. Basic Data Types CISC 360. Machine-Level Programming IV: Structured Data Sept. 24, Array Access. Array Allocation.

Page 1. Basic Data Types CISC 360. Machine-Level Programming IV: Structured Data Sept. 24, Array Access. Array Allocation. CISC 360 Basic Data Types Machine-Level Programming IV: Structured Data Sept. 24, 2008 2 CISC 360, Fa09 rray llocation rray ccess char string[12]; int val[5]; 1 5 2 1 3 int val[5]; x x + 12 x x + 4 x +

More information

Structs and Alignment CSE 351 Spring

Structs and Alignment CSE 351 Spring Structs and Alignment CSE 351 Spring 2018 http://xkcd.com/1168/ Administrivia Homework 3 due Wednesday Lab 3 released, due next week Lab 2 and midterm will be graded this week [in that order] 2 Roadmap

More information

Memory Organization and Addressing

Memory Organization and Addressing Memory Organization and essing CSCI 224 / ECE 317: Computer Architecture Instructor: Prof. Jason Fritts Slides adapted from Bryant & O Hallaron s slides 1 Data Representation in Memory Memory organization

More information

u Arrays One-dimensional Multi-dimensional (nested) Multi-level u Structures Allocation Access Alignment u Floating Point

u Arrays One-dimensional Multi-dimensional (nested) Multi-level u Structures Allocation Access Alignment u Floating Point u Arrays One-dimensional Multi-dimensional (nested) Multi-level u Structures Allocation Access Alignment u Floating Point u Basic Principle T A[L]; Array of data type T and length L Contiguously allocated

More information

Computer Organization: A Programmer's Perspective

Computer Organization: A Programmer's Perspective A Programmer's Perspective Machine-Level Programming (4: Data Structures) Gal A. Kaminka galk@cs.biu.ac.il Today Arrays One-dimensional Multi-dimensional (nested) Multi-level Structures Allocation Access

More information

Machine Representa/on of Programs: Arrays, Structs and Unions. This lecture. Arrays Structures Alignment Unions CS Instructor: Sanjeev Se(a

Machine Representa/on of Programs: Arrays, Structs and Unions. This lecture. Arrays Structures Alignment Unions CS Instructor: Sanjeev Se(a Machine Representa/on of Programs: rrays, Structs and Unions Instructor: Sanjeev Se(a 1 This lecture rrays Structures lignment Unions 2 1 This lecture rrays One- dimensional Mul(- dimensional (nested)

More information

CSC 252: Computer Organization Spring 2018: Lecture 9

CSC 252: Computer Organization Spring 2018: Lecture 9 CSC 252: Computer Organization Spring 2018: Lecture 9 Instructor: Yuhao Zhu Department of Computer Science University of Rochester Action Items: Assignment 2 is due tomorrow, midnight Assignment 3 is out

More information

Referencing Examples

Referencing Examples Referencing Examples zip_dig cmu; 1 5 2 1 3 16 20 24 28 32 36 zip_dig mit; 0 2 1 3 9 36 40 44 48 52 56 zip_dig nwu; 6 0 2 0 1 56 60 64 68 72 76 Code Does Not Do ny Bounds Checking! Reference ddress Value

More information

Machine-Level Programming V: Advanced Topics

Machine-Level Programming V: Advanced Topics Machine-Level Programming V: Advanced Topics Slides courtesy of: Randy Bryant & Dave O Hallaron 1 Today Structures Alignment Unions Memory Layout Buffer Overflow Vulnerability Protection 2 R.A. Rutenbar,

More information

Machine-Level Programming V: Advanced Topics

Machine-Level Programming V: Advanced Topics Machine-Level Programming V: Advanced Topics CSE 238/2038/2138: Systems Programming Instructor: Fatma CORUT ERGİN Slides adapted from Bryant & O Hallaron s slides 1 Today Memory Layout Buffer Overflow

More information

Carnegie Mellon. Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition

Carnegie Mellon. Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition 1 Machine-Level Programming IV: Data 15-213/18-213/14-513/15-513: Introduction to Computer Systems 8 th Lecture, September 20, 2018 2 Today Arrays One-dimensional Multi-dimensional (nested) Multi-level

More information

Arrays and Structs. CSE 351 Summer Instructor: Justin Hsia. Teaching Assistants: Josie Lee Natalie Andreeva Teagan Horkan.

Arrays and Structs. CSE 351 Summer Instructor: Justin Hsia. Teaching Assistants: Josie Lee Natalie Andreeva Teagan Horkan. rrays and Structs CSE 351 Summer 2018 Instructor: Justin Hsia Teaching ssistants: Josie Lee Natalie ndreeva Teagan Horkan http://xkcd.com/1270/ dministrivia Lab 2 due tonight Homework 3 due next Monday

More information

L14: Structs and Alignment. Structs and Alignment. CSE 351 Spring Instructor: Ruth Anderson

L14: Structs and Alignment. Structs and Alignment. CSE 351 Spring Instructor: Ruth Anderson Structs and Alignment CSE 351 Spring 2017 Instructor: Ruth Anderson Teaching Assistants: Dylan Johnson Kevin Bi Linxing Preston Jiang Cody Ohlsen Yufang Sun Joshua Curtis Administrivia Lab 2 due TONIGHT

More information

CS 31: Intro to Systems Arrays, Structs, Strings, and Pointers. Kevin Webb Swarthmore College March 1, 2016

CS 31: Intro to Systems Arrays, Structs, Strings, and Pointers. Kevin Webb Swarthmore College March 1, 2016 CS 31: Intro to Systems Arrays, Structs, Strings, and Pointers Kevin Webb Swarthmore College March 1, 2016 Overview Accessing things via an offset Arrays, Structs, Unions How complex structures are stored

More information

Basic Data Types. CS429: Computer Organization and Architecture. Array Allocation. Array Access

Basic Data Types. CS429: Computer Organization and Architecture. Array Allocation. Array Access Basic Data Types CS429: Computer Organization and Architecture Dr Bill Young Department of Computer Sciences University of Texas at Austin Last updated: October 31, 2017 at 09:37 Integral Stored and operated

More information

Machine Level Programming: Arrays, Structures and More

Machine Level Programming: Arrays, Structures and More Machine Level Programming: rrays, Structures and More Computer Systems Organization (Spring 2016) CSCI-U 201, Section 2 Instructor: Joanna Klukowska Slides adapted from Randal E. Bryant and David R. O

More information

CS429: Computer Organization and Architecture

CS429: Computer Organization and Architecture CS429: Computer Organization and Architecture Dr. Bill Young Department of Computer Sciences University of Texas at Austin Last updated: October 31, 2017 at 09:37 CS429 Slideset 10: 1 Basic Data Types

More information

Machine Programming 4: Structured Data

Machine Programming 4: Structured Data Machine Programming 4: Structured Data CS61, Lecture 6 Prof. Stephen Chong September 20, 2011 Announcements Assignment 2 (Binary bomb) due Thursday We are trying out Piazza to allow class-wide questions

More information

Machine- level Programming IV: Data Structures. Topics Arrays Structs Unions

Machine- level Programming IV: Data Structures. Topics Arrays Structs Unions Machine- level Programming IV: Data Structures Topics Arrays Structs Unions 1! Basic Data Types Integral Stored & operated on in general registers Signed vs. unsigned depends on instrucbons used Intel

More information

Structures, Unions Alignment, Padding, Bit Fields Access, Initialization Compound Literals Opaque Structures Summary. Structures

Structures, Unions Alignment, Padding, Bit Fields Access, Initialization Compound Literals Opaque Structures Summary. Structures Structures Proseminar C Grundlagen und Konzepte Michael Kuhn Research Group Scientific Computing Department of Informatics Faculty of Mathematics, Informatics und Natural Sciences University of Hamburg

More information

Structs and Alignment

Structs and Alignment Structs and Alignment CSE 351 Autumn 2016 Instructor: Justin Hsia Teaching Assistants: Chris Ma Hunter Zahn John Kaltenbach Kevin Bi Sachin Mehta Suraj Bhat Thomas Neuman Waylon Huang Xi Liu Yufang Sun

More information

Data Storage. August 9, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 August 9, / 19

Data Storage. August 9, Indiana University. Geoffrey Brown, Bryce Himebaugh 2015 August 9, / 19 Data Storage Geoffrey Brown Bryce Himebaugh Indiana University August 9, 2016 Geoffrey Brown, Bryce Himebaugh 2015 August 9, 2016 1 / 19 Outline Bits, Bytes, Words Word Size Byte Addressable Memory Byte

More information

Structs & Alignment. CSE 351 Autumn Instructor: Justin Hsia

Structs & Alignment. CSE 351 Autumn Instructor: Justin Hsia Structs & Alignment CSE 351 Autumn 2018 Instructor: Justin Hsia Teaching Assistants: Akshat Aggarwal An Wang Andrew Hu Brian Dai Britt Henderson James Shin Kevin Bi Kory Watson Riley Germundson Sophie

More information

Data Representation and Storage. Some definitions (in C)

Data Representation and Storage. Some definitions (in C) Data Representation and Storage Learning Objectives Define the following terms (with respect to C): Object Declaration Definition Alias Fundamental type Derived type Use pointer arithmetic correctly Explain

More information

Machine-Level Programming V: Unions and Memory layout

Machine-Level Programming V: Unions and Memory layout Machine-Level Programming V: Unions and Memory layout Slides adapted from Bryant and O Hallaron Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition 1 FAQ Call conventions

More information

Introduction to Computer Systems , fall th Lecture, Sep. 14 th

Introduction to Computer Systems , fall th Lecture, Sep. 14 th Introduction to Computer Systems 15 213, fall 2009 7 th Lecture, Sep. 14 th Instructors: Majd Sakr and Khaled Harras Last Time For loops for loop while loop do while loop goto version for loop while loop

More information

CS240: Programming in C

CS240: Programming in C CS240: Programming in C Lecture 10: Review - Structures and Memory Allocation Unions Recap: Structures Holds multiple items as a unit Treated as scalar in C: can be returned from functions, passed to functions

More information

Structs and Alignment

Structs and Alignment Structs and Alignment CSE 410 Winter 2017 Instructor: Justin Hsia Teaching Assistants: Kathryn Chan, Kevin Bi, Ryan Wong, Waylon Huang, Xinyu Sui Self Driving Cars Will Make Organ Shortages Even Worse

More information

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level

More information

EECS 213 Fall 2007 Midterm Exam

EECS 213 Fall 2007 Midterm Exam Full Name: EECS 213 Fall 2007 Midterm Exam Instructions: Make sure that your exam is not missing any sheets, then write your full name on the front. Write your answers in the space provided below the problem.

More information

Data Representation and Storage

Data Representation and Storage Data Representation and Storage Learning Objectives Define the following terms (with respect to C): Object Declaration Definition Alias Fundamental type Derived type Use size_t, ssize_t appropriately Use

More information

Systems I. Machine-Level Programming VII: Structured Data

Systems I. Machine-Level Programming VII: Structured Data Systems I Machine-Level Programming VII: Structured Data Topics rrays Structs Unions Basic Data Types Integral Stored & operated on in general registers Signed vs. unsigned depends on instructions used

More information

Byte Ordering. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Byte Ordering. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University Byte Ordering Jin-Soo Kim (jinsookim@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Memory Model Physical memory DRAM chips can read/write 4, 8, 16 bits DRAM modules

More information

Introduction to C. Why C? Difference between Python and C C compiler stages Basic syntax in C

Introduction to C. Why C? Difference between Python and C C compiler stages Basic syntax in C Final Review CS304 Introduction to C Why C? Difference between Python and C C compiler stages Basic syntax in C Pointers What is a pointer? declaration, &, dereference... Pointer & dynamic memory allocation

More information

Lecture 5: Outline. I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists

Lecture 5: Outline. I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists Lecture 5: Outline I. Multi- dimensional arrays II. Multi- level arrays III. Structures IV. Data alignment V. Linked Lists Multidimensional arrays: 2D Declaration int a[3][4]; /*Conceptually 2D matrix

More information

Byte Ordering. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Byte Ordering. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University Byte Ordering Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu SSE2030: Introduction to Computer Systems, Spring 2018, Jinkyu Jeong (jinkyu@skku.edu)

More information

V850 Calling Convention

V850 Calling Convention IAR Application Note V850 Calling Convention SUMMARY This application note describes the calling convention used by IAR Systems V850 compiler for C and Embedded C++. The intended audience is developers

More information

17. Instruction Sets: Characteristics and Functions

17. Instruction Sets: Characteristics and Functions 17. Instruction Sets: Characteristics and Functions Chapter 12 Spring 2016 CS430 - Computer Architecture 1 Introduction Section 12.1, 12.2, and 12.3 pp. 406-418 Computer Designer: Machine instruction set

More information

CSE 230 Intermediate Programming in C and C++

CSE 230 Intermediate Programming in C and C++ CSE 230 Intermediate Programming in C and C++ Unions and Bit Fields Fall 2017 Stony Brook University Instructor: Shebuti Rayana http://www3.cs.stonybrook.edu/~cse230/ Union Like structures, unions are

More information

CPEG421/621 Tutorial

CPEG421/621 Tutorial CPEG421/621 Tutorial Compiler data representation system call interface calling convention Assembler object file format object code model Linker program initialization exception handling relocation model

More information

Memory Management. Memory Management

Memory Management. Memory Management Memory Management Chapter 7 1 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated efficiently to pack as many processes into memory as possible 2 1 Memory

More information

Low Level Optimization by Data Alignment. Presented by: Mark Hauschild

Low Level Optimization by Data Alignment. Presented by: Mark Hauschild Low Level Optimization by Data Alignment Presented by: Mark Hauschild Motivation We have discussed how to gain performance Application already done, send it off to grid Switch gears this class Low-level

More information

CS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018

CS 31: Intro to Systems Pointers and Memory. Kevin Webb Swarthmore College October 2, 2018 CS 31: Intro to Systems Pointers and Memory Kevin Webb Swarthmore College October 2, 2018 Overview How to reference the location of a variable in memory Where variables are placed in memory How to make

More information

Porting 32-bit Applications to the Itanium Architecture - Lab 3: Managing Data Size

Porting 32-bit Applications to the Itanium Architecture - Lab 3: Managing Data Size Porting 32-bit Applications to the Itanium Architecture - Lab 3: Managing Data Size Introduction Overview Migrating your application from 32-bit to 64-bit will impact your data size in a number of ways.

More information

Machine- Level Representation: Data

Machine- Level Representation: Data Machine- Level Representation: Data CSCI 2021: Machine Architecture and Organiza8on Pen- Chung Yew Department Computer Science and Engineering University of Minnesota With Slides from Bryant, O Hallaron

More information

C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites:

C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites: C Programming Code: MBD101 Duration: 10 Hours Prerequisites: You are a computer science Professional/ graduate student You can execute Linux/UNIX commands You know how to use a text-editing tool You should

More information

CS , Fall 2004 Exam 1

CS , Fall 2004 Exam 1 Andrew login ID: Full Name: CS 15-213, Fall 2004 Exam 1 Tuesday October 12, 2004 Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID on the front.

More information

Hardware: Logical View

Hardware: Logical View Hardware: Logical View CPU Memory Bus Disks Net USB Etc. 1 Hardware: Physical View USB I/O controller Storage connections CPU Memory 2 Hardware: 351 View (version 0) instructions? Memory CPU data CPU executes

More information

Administrivia. Introduction to Computer Systems. Pointers, cont. Pointer example, again POINTERS. Project 2 posted, due October 6

Administrivia. Introduction to Computer Systems. Pointers, cont. Pointer example, again POINTERS. Project 2 posted, due October 6 CMSC 313 Introduction to Computer Systems Lecture 8 Pointers, cont. Alan Sussman als@cs.umd.edu Administrivia Project 2 posted, due October 6 public tests s posted Quiz on Wed. in discussion up to pointers

More information

Floating Point Stored & operated on in floating point registers Intel GAS Bytes C Single s 4 float Double l 8 double Extended t 10/12/16 long double

Floating Point Stored & operated on in floating point registers Intel GAS Bytes C Single s 4 float Double l 8 double Extended t 10/12/16 long double Basic Data Types Integral Stored & operated on in general (integer) registers Signed vs. unsigned depends on instructions used Intel GS Bytes C byte b 1 [unsigned] char word w 2 [unsigned] short double

More information

C Programming Review CSC 4320/6320

C Programming Review CSC 4320/6320 C Programming Review CSC 4320/6320 Overview Introduction C program Structure Keywords & C Types Input & Output Arrays Functions Pointers Structures LinkedList Dynamic Memory Allocation Macro Compile &

More information

CS , Fall 2001 Exam 1

CS , Fall 2001 Exam 1 Andrew login ID: Full Name: CS 15-213, Fall 2001 Exam 1 October 9, 2001 Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID on the front. Write

More information

Introduction to Computer Systems. Exam 1. February 22, This is an open-book exam. Notes are permitted, but not computers.

Introduction to Computer Systems. Exam 1. February 22, This is an open-book exam. Notes are permitted, but not computers. 15-213 Introduction to Computer Systems Exam 1 February 22, 2005 Name: Andrew User ID: Recitation Section: This is an open-book exam. Notes are permitted, but not computers. Write your answer legibly in

More information

Lectures 5-6: Introduction to C

Lectures 5-6: Introduction to C Lectures 5-6: Introduction to C Motivation: C is both a high and a low-level language Very useful for systems programming Faster than Java This intro assumes knowledge of Java Focus is on differences Most

More information

Layers of Abstraction. CS 3330: More C. printf. Last time

Layers of Abstraction. CS 3330: More C. printf. Last time Layers of Abstraction CS 3330: More C 30 August 2016 x += y add %rbx, %rax 60 03 Higher-level language: C Assembly: X86-64 Machine code: Y86 (we ll talk later) Logic and Registers 1 2 Last time printf

More information

C++ Structures Programming Workshop 2 (CSCI 1061U)

C++ Structures Programming Workshop 2 (CSCI 1061U) C++ Structures Programming Workshop 2 (CSCI 1061U) Faisal Qureshi http://faculty.uoit.ca/qureshi University of Ontario Institute of Technology C++ struct struct keyword can be used to define new data types

More information

Unit IV & V Previous Papers 1 mark Answers

Unit IV & V Previous Papers 1 mark Answers 1 What is pointer to structure? Pointer to structure: Unit IV & V Previous Papers 1 mark Answers The beginning address of a structure can be accessed through the use of the address (&) operator If a variable

More information

Today. Machine-Level Programming V: Advanced Topics. x86-64 Linux Memory Layout. Memory Allocation Example. Today. x86-64 Example Addresses

Today. Machine-Level Programming V: Advanced Topics. x86-64 Linux Memory Layout. Memory Allocation Example. Today. x86-64 Example Addresses Today Machine-Level Programming V: Advanced Topics CSci 2021: Machine Architecture and Organization October 17th, 2018 Your instructor: Stephen McCamant Memory Layout Buffer Overflow Vulnerability Protection

More information

We would like to find the value of the right-hand side of this equation. We know that

We would like to find the value of the right-hand side of this equation. We know that CS 61 Scribe Notes Computer Arithmetic II, Structured Data, Memory Layout (Th 9/13) Renzo Lucioni, Weishen Mead, Kat Zhou Unsigned Computer Arithmetic II Consider the following: We would like to find the

More information

FUNCTION POINTERS. int (*pf)(); // pf is a pointer to a function returning an int.

FUNCTION POINTERS. int (*pf)(); // pf is a pointer to a function returning an int. Function Pointers 1 FUNCTION POINTERS Sometimes we would like to choose different behaviors at different times in the same piece of code or function. For instance in a sorting routine, we want to allow

More information

High Performance Computing in C and C++

High Performance Computing in C and C++ High Performance Computing in C and C++ Rita Borgo Computer Science Department, Swansea University Summary Introduction to C Writing a simple C program Compiling a simple C program Running a simple C program

More information

CS , Fall 2002 Exam 1

CS , Fall 2002 Exam 1 Andrew login ID: Full Name: CS 15-213, Fall 2002 Exam 1 October 8, 2002 Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID on the front. Write

More information

This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy,

This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, Libffi This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the

More information

Computer System and programming in C

Computer System and programming in C Computer System and programming in C 1 C structures: aggregate, yet scalar aggregate in that they hold multiple data items at one time named members hold data items of various types like the notion of

More information

Syntax and Variables

Syntax and Variables Syntax and Variables What the Compiler needs to understand your program, and managing data 1 Pre-Processing Any line that starts with # is a pre-processor directive Pre-processor consumes that entire line

More information

CS241 Computer Organization Spring Loops & Arrays

CS241 Computer Organization Spring Loops & Arrays CS241 Computer Organization Spring 2015 Loops & Arrays 2-26 2015 Outline! Loops C loops: while, for, do-while Translation to jump to middle! Arrays Read: CS:APP2 Chapter 3, sections 3.6 3.7 IA32 Overview

More information

COMP26120: Linked List in C (2018/19) Lucas Cordeiro

COMP26120: Linked List in C (2018/19) Lucas Cordeiro COMP26120: Linked List in C (2018/19) Lucas Cordeiro lucas.cordeiro@manchester.ac.uk Linked List Lucas Cordeiro (Formal Methods Group) lucas.cordeiro@manchester.ac.uk Office: 2.28 Office hours: 10-11 Tuesday,

More information

Prac*ce problem on webpage

Prac*ce problem on webpage Last year, for the first *me, spending by Apple and Google on patent lawsuits and unusually big- dollar patent purchases exceeded spending on research and development of new products But in 2008, Mr. Phillips

More information

TILE PROCESSOR APPLICATION BINARY INTERFACE

TILE PROCESSOR APPLICATION BINARY INTERFACE MULTICORE DEVELOPMENT ENVIRONMENT TILE PROCESSOR APPLICATION BINARY INTERFACE RELEASE 4.2.-MAIN.1534 DOC. NO. UG513 MARCH 3, 213 TILERA CORPORATION Copyright 212 Tilera Corporation. All rights reserved.

More information

Memory Management william stallings, maurizio pizzonia - sistemi operativi

Memory Management william stallings, maurizio pizzonia - sistemi operativi Memory Management 1 summary goals and requirements techniques that do not involve virtual memory 2 memory management tracking used and free memory primitives allocation of a certain amount of memory de-allocation

More information

CIS 2107 Computer Systems and Low-Level Programming Spring 2012 Final

CIS 2107 Computer Systems and Low-Level Programming Spring 2012 Final Spring 2012 Name: Page Points Score 1 14 2 7 3 6 4 5 5 5 6 5 7 10 8 11 9 10 10 9 11 8 12 10 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc.

More information

Low-Level C Programming. Memory map Pointers Arrays Structures

Low-Level C Programming. Memory map Pointers Arrays Structures Low-Level C Programming Memory map Pointers Arrays Structures Memory Map 0x7FFF_FFFF Binaries load at 0x20000 by default Stack start set by binary when started Stack grows downwards You will need one stack

More information

Question Points Score Total: 100

Question Points Score Total: 100 Computer Science 2021 Spring 2016 Midterm Exam 1 February 29th, 2016 Time Limit: 50 minutes, 3:35pm-4:25pm This exam contains 7 pages (including this cover page) and 5 questions. Once we tell you to start,

More information

Reverse Engineering II: Basics. Gergely Erdélyi Senior Antivirus Researcher

Reverse Engineering II: Basics. Gergely Erdélyi Senior Antivirus Researcher Reverse Engineering II: Basics Gergely Erdélyi Senior Antivirus Researcher Agenda Very basics Intel x86 crash course Basics of C Binary Numbers Binary Numbers 1 Binary Numbers 1 0 1 1 Binary Numbers 1

More information

Machine/Assembler Language Putting It All Together

Machine/Assembler Language Putting It All Together COMP 40: Machine Structure and Assembly Language Programming Fall 2015 Machine/Assembler Language Putting It All Together Noah Mendelsohn Tufts University Email: noah@cs.tufts.edu Web: http://www.cs.tufts.edu/~noah

More information

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013

ECE 2035 Programming HW/SW Systems Fall problems, 7 pages Exam Two 23 October 2013 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

memory management Vaibhav Bajpai

memory management Vaibhav Bajpai memory management Vaibhav Bajpai OS 2013 motivation virtualize resources: multiplex CPU multiplex memory (CPU scheduling) (memory management) why manage memory? controlled overlap processes should NOT

More information

First of all, it is a variable, just like other variables you studied

First of all, it is a variable, just like other variables you studied Pointers: Basics What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the address (rather than the value)

More information