Security News

Patches

Site Menu
  • Home Page
  • New AO Newsletters
  • New Downloads
  • Fight-Back!
  • Discussion Forums
  • Active Threads RSS
  • Top Links List
  • Security Events
  • Hacker Jargon
  • Site FAQ
  • IP Locator

  • Tutorial Menu
  • Main Index
  • AO Related
  • Hardware
  • IRC
  • Networking
  • Newbie Questions
  • Operating Systems
  • Programming
  • Security
  • Web

  • Downloads Menu
  • Main Index
  • Antivirus
  • Cryptography
  • Firewalls
  • Forensics
  • Honeypots
  • Intrusion Detection
  • Keyboard Loggers
  • Password Generators
  • Port Scanners
  • Spam Blockers
  • Spyware Removers
  • drunk mouse syndrome = D = dumb terminal

    Duff's device n.

    The most dramatic use yet seen of fall through in C, invented by Tom Duff when he was at Lucasfilm. Trying to bum all the instructions he could out of an inner loop that copied data serially onto an output port, he decided to unroll it. He then realized that the unrolled version could be implemented by interlacing the structures of a switch and a loop:

       register n = (count + 7) / 8;      /* count > 0 assumed */
    
       switch (count % 8)
       {
       case 0:        do {  *to = *from++;
       case 7:              *to = *from++;
       case 6:              *to = *from++;
       case 5:              *to = *from++;
       case 4:              *to = *from++;
       case 3:              *to = *from++;
       case 2:              *to = *from++;
       case 1:              *to = *from++;
                          } while (--n > 0);
       }
    

    Shocking though it appears to all who encounter it for the first time, the device is actually perfectly valid, legal C. C's default fall through in case statements has long been its most controversial single feature; Duff observed that "This code forms some sort of argument in that debate, but I'm not sure whether it's for or against." Duff has discussed the device in detail at http://www.lysator.liu.se/c/duffs-device.php. Note that the omission of postfix ++ from *to was intentional (though confusing). Duff's device can be used to implement memory copy, but the original aim was to copy values serially into a magic IO register.

    [For maximal obscurity, the outermost pair of braces above could be actually be removed -- GLS]

    drunk mouse syndrome = D = dumb terminal

    All times are GMT +1. The time now is 12:14 AM.



    Powered by vBulletin® Version 3.8.4
    Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.