{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:33:19Z","timestamp":1750307599753,"version":"3.41.0"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2010,4,1]],"date-time":"2010-04-01T00:00:00Z","timestamp":1270080000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2010,4]]},"abstract":"<jats:p>Modern embedded processors with dedicated address generation unit support memory accesses through auto-increment\/decrement addressing mode. The auto-increment\/decrement mode, if properly utilized, can save address arithmetic instructions, reduce static and dynamic memory footprint of the program, and speed up the execution as well.<\/jats:p>\n          <jats:p>Liao [1995, 1996] categorized this problem as Simple Offset Assignment (SOA) and General Offset Assignment (GOA), which involves storage layout of variables and assignment of address registers, respectively, proposing several heuristic solutions. This article proposes a new direction for investigating the solution space of the problem. The general idea [Zhuang 2003] is to perform simplification of the underlying access graph through coalescence of the memory locations of program variables. A comprehensive framework is proposed including coalescence-based offset assignment and post\/pre-optimization. Variables not interfering with others (not simultaneously live at any program point) can be coalesced into the same memory location. Coalescing allows simplifications of the access graph yielding better SOA solutions; it also reduces the address register pressure to such low values that some GOA solutions become optimal. Moreover, it can reduce the memory footprint both statically and at runtime for stack variables. Our second optimization (post\/pre-optimization) considers both post- and pre-modification mode for optimizing code across basic blocks, which makes it useful. Making use of both addressing modes further reduces SOA\/GOA cost and our post\/pre-optimization phase is optimal in selecting post or pre mode after variable offsets have been determined.<\/jats:p>\n          <jats:p>We have shown the advantages of our framework over previous approaches to capture more opportunities to reduce both stack size and SOA\/GOA cost, leading to more speedup.<\/jats:p>","DOI":"10.1145\/1734206.1734208","type":"journal-article","created":{"date-parts":[[2010,5,6]],"date-time":"2010-05-06T17:41:18Z","timestamp":1273167678000},"page":"1-41","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["An optimization framework for embedded processors with auto-addressing mode"],"prefix":"10.1145","volume":"32","author":[{"given":"Xiaotong","family":"Zhuang","sequence":"first","affiliation":[{"name":"IBM T.J. Watson Research Center, New York"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Santosh","family":"Pande","sequence":"additional","affiliation":[{"name":"Georgia Institute of Technology, Atlanta, GA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2010,4,22]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/6448"},{"volume-title":"Proceedings of the 9th International Symposium on Systems Synthesis. IEEE, 31--37","author":"Araujo G.","key":"e_1_2_1_2_1"},{"key":"e_1_2_1_3_1","unstructured":"Atri S. 1999. Improved code optimization techniques for embedded processors. Master's thesis Department of Electrical and Computer Engineering Louisiana State University.  Atri S. 1999. Improved code optimization techniques for embedded processors. Master's thesis Department of Electrical and Computer Engineering Louisiana State University."},{"volume-title":"Proceedings of the Conference on Languages and Compilers for High-Performance Computing.","author":"Atri S.","key":"e_1_2_1_4_1"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380220202"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/2245737.2245881"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/800230.806984"},{"key":"e_1_2_1_8_1","unstructured":"Ganssle J. G. 1992. The Art of Programming Embedded Systems. Academic Press San Diego CA.   Ganssle J. G. 1992. The Art of Programming Embedded Systems. Academic Press San Diego CA."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.5555\/266388.266436"},{"volume-title":"Proceedings of the 12th International Conference on Compiler Construction (CC'03)","author":"Kandemir M.","key":"e_1_2_1_10_1"},{"volume-title":"Proceedings of the International Symposium on Microarchitecture.","author":"Lee C.","key":"e_1_2_1_11_1"},{"volume-title":"Proceedings of the Asia and South Pacific Design Automation Conference (ASP-DAC). IEEE.","author":"Leupers R.","key":"e_1_2_1_12_1"},{"volume-title":"Proceedings of the International Conference on Computer Aided Design (ICCAD). 109--112","author":"Leupers R.","key":"e_1_2_1_13_1"},{"volume-title":"Proceedings of the International System Synthesis Symposium (ISSS).","author":"Leupers R.","key":"e_1_2_1_14_1"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.5555\/1765931.1765960"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/207110.207139"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/229542.229543"},{"key":"e_1_2_1_18_1","unstructured":"Motorola Inc. 2000. Motorola DSP56300 family manual revision 3.0.  Motorola Inc. 2000. Motorola DSP56300 family manual revision 3.0."},{"key":"e_1_2_1_19_1","unstructured":"Motorola Inc. 2001. SC140 DSP core reference manual revision 3.0.  Motorola Inc. 2001. SC140 DSP core reference manual revision 3.0."},{"key":"e_1_2_1_20_1","unstructured":"Motorola Inc. Motorola DSP56300 family optimizing C compiler user's manual. Motorola Inc.  Motorola Inc. Motorola DSP56300 family optimizing C compiler user's manual. Motorola Inc."},{"key":"e_1_2_1_21_1","unstructured":"Muchnick S. S. 1997. Advanced Compiler Design and Implementation. Morgan Kaufman San Francisco CA.   Muchnick S. S. 1997. Advanced Compiler Design and Implementation. Morgan Kaufman San Francisco CA."},{"volume-title":"Proceeding of the International Workshop on Software and Compilers for Embedded Systems (SCOPES).","author":"Ottoni D.","key":"e_1_2_1_22_1"},{"volume-title":"Proceeding of the International Conference on Compiler Construction (CC).","author":"Ottoni G.","key":"e_1_2_1_23_1"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1196636.1196641"},{"key":"e_1_2_1_25_1","unstructured":"Rao A. 1998. Compiler optimizations for storage assignment on embedded DSPs. M. S. thesis Department of Electrical and Computer Engineering and Computer Science University of Cincinnati.  Rao A. 1998. Compiler optimizations for storage assignment on embedded DSPs. M. S. thesis Department of Electrical and Computer Engineering and Computer Science University of Cincinnati."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301653"},{"volume-title":"User's Manual","author":"Stallman R.","key":"e_1_2_1_27_1"},{"volume-title":"Reference Manual","author":"Stallman R.","key":"e_1_2_1_28_1"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/266021.266103"},{"volume-title":"Proceedings of the International Conference on Acoustics, Speech, and Signal Processing (ICCAD).","author":"Sudarsanam A.","key":"e_1_2_1_30_1"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/378239.378521"},{"volume-title":"Proceedings of the International Conference on Parallel Processing (ICPP).","author":"Zhang Y.","key":"e_1_2_1_32_1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/780732.780763"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1734206.1734208","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1734206.1734208","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T12:45:28Z","timestamp":1750250728000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1734206.1734208"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,4]]},"references-count":33,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2010,4]]}},"alternative-id":["10.1145\/1734206.1734208"],"URL":"https:\/\/doi.org\/10.1145\/1734206.1734208","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2010,4]]},"assertion":[{"value":"2008-07-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2010-04-22","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}