Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Dead-code elimination
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==References== {{reflist|refs= <ref name="Allen_Cocke_Kennedy_1981">{{cite book |author-first1=Frances |author-last1=Allen |author-first2=John |author-last2=Cocke |author-link2=John Cocke (computer scientist) |author-first3=Ken |author-last3=Kennedy |author-link3=Ken Kennedy (computer scientist) |chapter=Reduction of Operator Strength |title=Program Flow Analysis: Theory & Application |editor-first1=Neil D. |editor-last1=Jones |editor-link1=Neil D. Jones |editor-first2=Steven Stanley |editor-last2=Muchnick |editor-link2=Steven Stanley Muchnick |publisher=[[Prentice-Hall]] |date=June 1981 |isbn=0-13729681-9}}</ref> <ref name="Kennedy_1981">{{cite book |author-first=Ken |author-last=Kennedy |author-link=Ken Kennedy (computer scientist) |chapter=A Survey of Data-flow Analysis Techniques |title=Program Flow Analysis: Theory & Application |editor-first1=Neil D. |editor-last1=Jones |editor-link1=Neil D. Jones |editor-first2=Steven Stanley |editor-last2=Muchnick |editor-link2=Steven Stanley Muchnick |publisher=[[Prentice-Hall]] |date=June 1981 |isbn=0-13729681-9}}</ref> <ref name="Cytron_Ferrante_Rosen_Zadeck_1991">{{cite book |author-first1=Ron K. |author-last1=Cytron |author-first2=Jeanne |author-last2=Ferrante |author-link2=Jeanne Ferrante |author-first3=Barry K. |author-last3=Rosen |author-first4=F. Kenneth |author-last4=Zadeck |title=Efficiently Computing Static Single Assignment Form and the Program Dependence Graph |id=[[ACM TOPLAS]] 13(4) |date=1991}}</ref> <ref name="Cooper_Torczon_2003">{{cite book |author-first1=Keith D. |author-last1=Cooper |author-link1=Keith D. Cooper |author-first2=Linda |author-last2=Torczon |title=Engineering a Compiler |publisher=[[Morgan Kaufmann]] |date=2003 |orig-year=2002-01-01 |pages=498ff |isbn=978-1-55860698-2}}</ref> <ref name="Conway_1995_DDCE">{{cite newsgroup |title=Cyclic data structures |author-first=Andrew |author-last=Conway |date=1995-12-04 |newsgroup=comp.lang.functional |url=https://groups.google.com/d/msg/comp.lang.functional/zFsRAGroeVM/2L5TIgcG-1IJ |access-date=2017-07-03 |url-status=live |archive-url=https://archive.today/20170909085605/https://groups.google.com/forum/%23!msg/comp.lang.functional/zFsRAGroeVM/2L5TIgcG-1IJ |archive-date=2017-09-09 |quote=[…] [[Lazy evaluation]] is basically [[dynamic dead-code elimination|dynamic dead code elimination]]. […]}} (NB. Possibly the first public use of the term ''dynamic dead-code elimination'', though only conceptually and with a focus on lazy evaluation in [[functional language]]s.)</ref> <ref name="Paul_2001_DDCE">{{cite newsgroup |title=[ANN] FreeDOS beta 6 released |author-first=Matthias R. |author-last=Paul |date=2001-04-10 |language=German |newsgroup=de.comp.os.msdos |url=https://groups.google.com/d/msg/de.comp.os.msdos/qCZs8p6MyPQ/Pksl0Pv6qM8J |access-date=2017-07-02 |url-status=live |archive-url=https://archive.today/20170909084250/https://groups.google.com/forum/%23!msg/de.comp.os.msdos/qCZs8p6MyPQ/Pksl0Pv6qM8J |archive-date=2017-09-09 |quote=[…] brandneue[s] Feature, der [[dynamic dead-code elimination|dynamischen Dead-Code-Elimination]], die die jeweils notwendigen Bestandteile des Treibers erst zum Installationszeitpunkt zusammenbastelt und reloziert, so daß keine ungenutzten Code- oder Datenbereiche mehr resident bleiben (z.B. wenn jemand ein bestimmtes FreeKEYB-Feature nicht benötigt). […]}} (NB. This represents the first known implementation of byte-level granular ''dynamic dead-code elimination'' for software [[assembly language|assembled]] or [[ahead-of-time compilation|compiled ahead-of-time]].)</ref> <ref name="Paul_2002_DDCE">{{cite web |title=[fd-dev] Ctrl+Alt+Del |author-first=Matthias R. |author-last=Paul |date=2002-04-03 |orig-year=2001-06-18 |work=freedos-dev |url=https://marc.info/?l=freedos-dev&m=101783474625117 |access-date=2017-09-09 |url-status=live |archive-url=https://archive.today/20170909084942/https://marc.info/?l=freedos-dev&m=101783474625117 |archive-date=2017-09-09 |quote=[…] any of the […] options can be "permanently" excluded at installation time (will also save the memory for the corresponding code excerpts due to our [[Dynamic Dead Code Elimination]]), or it can be disabled or enabled at any later time via API functions in case someone wants to keep a user from being able to reboot the machine. […] we are considering to add more synchronous cache flush calls […] Due to our Dynamic Dead Code Elimination method this would not cause any kind of bloating when not needed in a particular target configuration as a particular cache flush call would be included in FreeKEYB's runtime image only if the corresponding disk cache is loaded as well or FreeKEYB was told by command line switches to load the corresponding support.}}</ref> <ref name="Paul_2002_DDCE2">{{cite web |title=[fd-dev] Ctrl+Alt+Del |author-first=Matthias R. |author-last=Paul |date=2002-04-06 |work=freedos-dev |url=https://marc.info/?l=freedos-dev&m=101807225917568&w=2 |access-date=2019-04-27 |url-status=live |archive-url=https://archive.today/20190427131940/https://marc.info/?l=freedos-dev&m=101807225917568&w=2 |archive-date=2019-04-27 |quote=[…] FreeKEYB builds the driver's runtime image at initialization time depending on the type of machine it is being loaded on, the type of keyboard, layout, country and code page used, the type of mouse and video adapter(s) installed, the other drivers loaded on that system, the operating system and the load and relocation method(s) used, the individual features included, and the configuration options specified in the command line. Due to the large number of command line switches and options supported […] (around fifty switches […] with multiple possible settings) there is a high number of feature combinations with uncountable dependencies […] resulting in […] endless number of […] different target images. FreeKEYB's Dynamic Dead Code Elimination technique manages to resolve […] these […] dependencies and […] remove dead code and data […] is not restricted to […] include or exclude a somewhat limited number of modules or whole sub-routines and fix up some dispatch tables as in classical TSR programming, but […] works […] at […] byte level […] able to remove […] individual instructions in the middle of larger routines […] distributed all over the code to handle a particular case or support a specific feature […] special tools are used to analyze the code […] and create […] fixup tables […] automated […] using conditional defines […] to declare the various cases […] not only optional at assembly time but at initialization time […] without the […] overhead of having at least some amount of dead code left in the runtime image […] to keep track of all the dependencies between […] these conditionals, dynamically build and relocate the runtime image, fix up all the references between these small, changing, and moving binary parts […] still allowing to use the tiny .COM/.SYS style […] model […] is done at initialization time […] API to import and export object structures between FreeKEYB and the calling application […] to transparently resize and move them internally […] at runtime […]}}</ref> <ref name="Paul_1997_FreeKEYB">{{citation |title=FreeKEYB - Enhanced DOS keyboard and console driver |edition=v6.5 |author-first1=Matthias R. |author-last1=Paul |author-first2=Axel C. |author-last2=Frinke |type=User Manual |date=1997-10-13 |orig-year=first published 1991}} [https://web.archive.org/web/20190309194320/http://sta.c64.org/dosprg/fk657p1.zip<!-- FreeKEYB 6.57p1 Beta as of 2004-08-17 with outdated and incomplete documentation -->] (NB. FreeKEYB is a [[Unicode]]-based dynamically configurable successor of K3PLUS supporting most [[keyboard layout]]s, [[code page]]s, and [[List of country calling codes|country code]]s. Utilizing an off-the-shelf [[macro assembler]] as well as a framework of automatic pre- and post-processing analysis tools to generate dependency and [[code morphing]] [[meta data]] to be embedded into the [[executable file]] alongside the [[binary code]] and a self-discarding, [[instruction relaxation|relaxing]] and [[relocating loader]], the driver implements byte-level granular [[dynamic dead-code elimination]] and [[relocation (computing)|relocation]] techniques at [[load-time]] as well as [[self-modifying code]] and reconfigurability at [[runtime (computing)|run-time]] to minimize its memory footprint downto close the [[canonical form]] depending on the underlying hardware, operating system, and driver configuration as well as the selected feature set and locale (about sixty configuration switches with hundreds of options for an almost unlimited number of possible combinations). This complexity and the dynamics are hidden from users, who deal with a single executable file just like they would do with a conventional driver. K3PLUS was an extended keyboard driver for [[DOS]] widely distributed in Germany at its time, with adaptations to a handful of other European languages available. It supported a sub-set of features already, but did not implement dynamic dead-code elimination.)</ref> <ref name="Paul_2006_FreeKEYB">{{citation |title=FreeKEYB - Advanced international DOS keyboard and console driver |edition=v7 preliminary |author-first1=Matthias R. |author-last1=Paul |author-first2=Axel C. |author-last2=Frinke |type=User Manual |date=2006-01-16}}</ref> <ref name="Butts_2002">{{cite web |title=Dynamic Dead-Instruction Detection and Elimination |author-first1=J. Adam |author-last1=Butts |author-first2=Guri |author-last2=Sohi |publisher=Computer Science Department, [[University of Wisconsin-Madison]] |date=October 2002 |id=[[ACM ASPLOS|ASPLOS]] X [[Association for Computing Machinery|ACM]] 1-58113-574-2/02/0010 |location=San Jose, CA, USA |url=https://ftp.cs.wisc.edu/sohi/papers/2002/deadinstructions.asplos.pdf |access-date=2017-06-23 |url-status=live |archive-url=https://archive.today/20190420144100/http://ftp.cs.wisc.edu/sohi/papers/2002/deadinstructions.asplos.pdf |archive-date=2019-04-20}}</ref> <ref name="Kubice_2024">{{cite web |title=Dynamic Dead Code Elimination: Optimizing for Flexibility |author-first=Jan |author-last=Kubice |date=2024-10-17 |url=https://www.teachit.cz/tutorial.php?id=50&title=Dynamic+Dead+Code+Elimination%3A+Optimizing+for+Flexibility+%5BEN%5D}}</ref> <ref name="IBM_2002_Java">{{cite book |title=Intentia Movex Java on the IBM iSeries Server - An Implementation Guide - Overview of Movex Java on the iSeries server - Movex Java on iSeries installation and configuration - Operational tips and techniques |chapter=Chapter 5. Java overview and iSeries implementation - 5.1.1. Miscellaneous components |author-first1=Yessong |author-last1=Johng |author-first2=Per |author-last2=Danielsson |author-first3=Per |author-last3=Ehnsiö |author-first4=Mats |author-last4=Hermansson |author-first5=Mika |author-last5=Jolanki |author-first6=Scott |author-last6=Moore |author-first7=Lars |author-last7=Strander |author-first8=Lars |author-last8=Wettergren |page=41 |series=Red Books |publisher=[[IBM Corp.]] |date=2002-11-08 |id=SG24-6545-00 |isbn=0-73842461-7 |url=https://www.redbooks.ibm.com/redbooks/pdfs/sg246545.pdf |access-date=2019-04-20 |url-status=live |archive-url=https://web.archive.org/web/20131008194558/http://www.redbooks.ibm.com/redbooks/pdfs/sg246545.pdf |archive-date=2013-10-08}} [https://www.redbooks.ibm.com/abstracts/sg246545.html<!-- https://web.archive.org/web/20190420150738/https://www.redbooks.ibm.com/abstracts/sg246545.html -->]</ref> <ref name="Polito_2015">{{cite web |title=Virtualization Support for Application Runtime Specialization and Extension - Programming Languages |author-first=Guillermo |author-last=Polito |publisher=[[Universite des Sciences et Technologies de Lille]] |date=2015 |id=HAL Id: tel-01251173 |pages=111–124 |url=https://hal.inria.fr/tel-01251173/file/Poli15Thesis.pdf |access-date=2017-06-23 |url-status=live |archive-url=https://web.archive.org/web/20170623021500/https://hal.inria.fr/tel-01251173/file/Poli15Thesis.pdf |archive-date=2017-06-23}}</ref> <ref name="Thammanur_2001_JIT">{{cite thesis |title=A Just in Time Register Allocation and Code Optimization Framework for Embedded Systems |author-first=Sathyanarayan |author-last=Thammanur |date=2001-01-31 |type=MS thesis |id=ucin982089462 |publisher=[[University of Cincinnati]], Engineering: Computer Engineering |url=http://rave.ohiolink.edu/etdc/view?acc_num=ucin982089462}} [https://etd.ohiolink.edu/!etd.send_file?accession=ucin982089462&disposition=inline] {{Webarchive|url=https://web.archive.org/web/20190728221938/https://etd.ohiolink.edu/!etd.send_file?accession=ucin982089462&disposition=inline |date=2019-07-28}}[https://etd.ohiolink.edu/!etd.send_file?accession=ucin982089462&disposition=attachment] {{Webarchive|url=https://web.archive.org/web/20190728221727/https://etd.ohiolink.edu/!etd.send_file?accession=ucin982089462&disposition=attachment |date=2019-07-28}}</ref> }}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)