Working with Buffers

Working with Buffers

WORKING WITH BuffERS Seminar EffiCIENT PrOGRAMMING IN C Christoph BrAUER ScientifiC Computing ResearCH GrOUP University HamburG December , TABLE OF Contents PrEFACE INTRODUCTION TO C BUffERS AND STORAGE VARIANTS Runtime ALLOCATION EffiCIENCY Security CONCERNS LiterATURE Discussion AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 REALLY WORKING AVAILABLE ... Linux RUNNING ON AMD ARCHITECTURE GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 REALLY WORKING AVAILABLE ... Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 REALLY WORKING AVAILABLE ... CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 REALLY WORKING AVAILABLE ... GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS REALLY WORKING AVAILABLE ... Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS REALLY WORKING AVAILABLE ... DEFAULT -O0 Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS REALLY WORKING AVAILABLE ... Examples THEMSELVES ARE Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS REALLY WORKING AVAILABLE ... Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS AVAILABLE ... Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE REALLY WORKING / AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE REALLY WORKING AVAILABLE ... / FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE REALLY WORKING AVAILABLE ... AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU / Please ASK ME JUST INBETWEEN ! PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE REALLY WORKING AVAILABLE ... AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS / PrEFACE EnvirONMENT USED FOR EXAMPLES Linux RUNNING ON AMD ARCHITECTURE Data IS STORED IN little-endian FORMAT CPU REGISTERS AND POINTERS ARE BITS GCC . WITH RECENT BINUTILS ( as, ld, gas, OBJDUMP ... ) Not ANSI C BUT GCC’S ISO C DIALECT DEFAULT -O0 Examples THEMSELVES ARE REALLY WORKING AVAILABLE ... AS A HARDCOPY, SHOULD LIE JUST IN FRONT OF YOU FOR DOwnload, USE THESE FOR YOUR OWN EXPERIMENTS Please ASK ME JUST INBETWEEN ! / INTRODUCTION TO C BUffERS AND STORAGE VARIANTS THAT IS ASSIGNED DATA OF THE SAME TYPE AND ALLOCATED USING THE C PROGRAMMING LANGUAGE A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... A C BUffER IS ... Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? / THAT IS ASSIGNED DATA OF THE SAME TYPE AND ALLOCATED USING THE C PROGRAMMING LANGUAGE A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? A C BUffER IS ... / THAT IS ASSIGNED DATA OF THE SAME TYPE AND ALLOCATED USING THE C PROGRAMMING LANGUAGE Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? A C BUffER IS ... A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... / AND ALLOCATED USING THE C PROGRAMMING LANGUAGE Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? A C BUffER IS ... A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... THAT IS ASSIGNED DATA OF THE SAME TYPE / Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? A C BUffER IS ... A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... THAT IS ASSIGNED DATA OF THE SAME TYPE AND ALLOCATED USING THE C PROGRAMMING LANGUAGE / INTRODUCTION TO C BUffERS AND STORAGE VARIANTS DefiNITION What IS A C BUffER ? A C BUffER IS ... A CONTINUOUS AREA OF GENERAL COMPUTER MEMORY ... THAT IS ASSIGNED DATA OF THE SAME TYPE AND ALLOCATED USING THE C PROGRAMMING LANGUAGE Just SOME BUffERS HELLOBUffers.c 1 typedef unsigned long long int uint64_t ; 2 3 int main ( void) 4 { 5 char bufPtr1[32] ="Jay Miner"; 6 char *bufPtr2 ="Jack Tramiel"; 7 uint64_t *bufPtr3 = malloc ( 16 * sizeof ( uint64_t ) ) ; 8 int bufPtr4[4] = { 0x1234, 0x4567, 0xdead, 0xbeef } ; 9 return(0); 10 } / PrOGRAM OUTPUT Greetings, Professor Falken. Nothing REALLY GOING ON HERE ? INTRODUCTION TO C BUffERS AND STORAGE VARIANTS One SIMPLE BUffER One SIMPLE BUffER SIMPLEBUffer.c 1 int main ( void) 2 { 3 char *myBufferPtr ="Greetings, Professor Falken.\n"; 4 printf ("%s", myBufferPtr ) ; 5 return(0); 6 } / Nothing REALLY GOING ON HERE ? INTRODUCTION TO C BUffERS AND STORAGE VARIANTS One SIMPLE BUffER One SIMPLE BUffER SIMPLEBUffer.c 1 int main ( void) 2 { 3 char *myBufferPtr ="Greetings, Professor Falken.\n"; 4 printf ("%s", myBufferPtr ) ; 5 return(0); 6 } PrOGRAM OUTPUT Greetings, Professor Falken. / INTRODUCTION TO C BUffERS AND STORAGE VARIANTS One SIMPLE BUffER One SIMPLE BUffER SIMPLEBUffer.c 1 int main ( void) 2 { 3 char *myBufferPtr ="Greetings, Professor Falken.\n"; 4 printf ("%s", myBufferPtr ) ; 5 return(0); 6 } PrOGRAM OUTPUT Greetings, Professor Falken.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    233 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us