Skip to main content
Log in

Data Dependence Analysis of Assembly Code

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

Determination of data dependences is a task typically performed with high-level language source code in today's optimizing and parallelizing compilers. Very little work has been done in the field of data dependence analysis on assembly language code, but this area will be of growing importance, e.g., for increasing instruction-level parallelism. A central element of a data dependence analysis in this case is a method for memory reference disambiguation which decides whether two memory operations may access (or definitely access) the same memory location. In this paper we describe a new approach for the determination of data dependences in assembly code. Our method is based on a sophisticated algorithm for symbolic value propagation, and it can derive value-based dependences between memory operations instead of just address-based dependences. We have integrated our method into the Salto system for assembly language optimization. Experimental results show that our approach greatly improves the precision of the dependence analysis in many cases.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

REFERENCES

  1. M. D. Tiemann, The GNU instruction scheduler. Technical Report CS 343, Free Software Foundation, Cambridge, Massachusetts (June 1989).

    Google Scholar 

  2. S. Davidson, D. Landskov, B. D. Shriver, and P. W. Mallet, Some experiments in local microcode compaction for horizontal machines, IEEE Trans. Computers 30(7):460–477 (July 1981).

    Google Scholar 

  3. J. A. Fisher, Trace scheduling: A technique for global microcode compaction, IEEE Trans. Computers 30(7):478–490 (July 1981).

    Google Scholar 

  4. A. Nicolau, Percolation scheduling: A parallel compilation technique, Technical Report TR 85-678, Cornell University, Department of Computer Science (May 1985).

  5. B. R. Rau and J. A. Fisher, Instruction-level parallel processing: History overview, and perspective, J. Supercomputing 7(1-2):9–50 (May 1993).

    Google Scholar 

  6. R. M. Stallman, Using and porting the GNU CC, Technical Report, Free Software Foundation, Cambridge, Massachusetts (January 1989).

    Google Scholar 

  7. D. W. Wall. Systems for late code modification. In R. Giegerich and S. L. Graham (eds.), Code Generation-Concepts, Tools, Techniques, Workshops in Computing, Springer-Verlag, pp. 275–293 (1992).

  8. A. Srivastava and D. W. Wall, A practical system for intermodule code optimization at link-time, J. Progr. Lang. 1(1):1–18 (June 1989).

    Google Scholar 

  9. J. A. Fisher, Walk-time techniques catalyst for architectural change, IEEE Computer 30(9):40–42 (September 1997).

    Google Scholar 

  10. E. Schnarr and J. R. Larus, Instruction scheduling and executable editing, Proc. 29th Ann. IEEE-ACM Int'l. Symp. Microarchitecture (MICRO-29), Paris, pp. 288–297 (December 1996).

  11. R. L. Sites, A. Chernoff, M. B. Kirk, M. P. Marks, and S. G. Robinson, Binary translation, Commun. ACM 36(2):69–81 (February 1993).

    Google Scholar 

  12. P. Feautrier, Array expansion, Proc. Second Int'l. Conf. Supercomputing, ACM Press (July 1988).

  13. W. Pugh and D. Wonnacott, An exact method for analysis of value-based array data dependences, In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua (eds.), Proc. Sixth Workshop on Languages and Compilers for Parallel Computing, Lecture Notes in Computer Science, Springer-Verlag, Portland, Oregon, Vol. 768, pp. 546–566 (1993).

    Google Scholar 

  14. W. Landi and B. G. Ryder, Pointer-induced aliasing: A problem classification, Conf. Record 18th Ann. ACM Symp. Principles Progr. Lang., Orlando, Florida, pp. 93–103 (January 1991).

  15. D. W. Wall, Limits of instruction level parallelism, ACM SIGPLAN Notices 26(4): 176–188 (April 1991).

    Google Scholar 

  16. S. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, San Francisco, California (1997).

    Google Scholar 

  17. E. Rohou, F. Bodin, and A. Seznec, Salto: System for assembly-language transformation and optimization. In M. Gerndt (ed.), Proc. Sixth Workshop Compilers for Parallel Computers, Konferenzen des Forschungszentrums Jülich, Forschungszentrum Jülich, Aachen, Vol. 21, pp. 261–272 (December 1996).

    Google Scholar 

  18. J. R. Larus and P. N. Hilfinger, Detecting conflicts between structure accesses, ACM SIGPLAN Notices 23(7):21–34 (July 1988).

    Google Scholar 

  19. A. V. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley Publishing Company, Reading, Massachusetts (1988).

    Google Scholar 

  20. J. B. Kam and J. D. Ullman, Monotone data flow analysis frameworks, Acta Informatica 7:305–317 (1977).

    Google Scholar 

  21. A. V. Aho, J. E. Hopcroft, and J. D. Ullman, The Design and Analysis of Computer Algorithms, Addison-Wesley Publishing Company, Reading, Massachusetts (1974).

    Google Scholar 

  22. W. Pugh, The Omega test: A fast and practical integer programming algorithm for dependence analysis, Commun. ACM 8:102–114 (August 1992).

    Google Scholar 

  23. M. M. Brandis, Optimizing compilers for structured programming languages, Ph.D. dissertation, Institute for Computer Systems, ETH Zürich (1995).

    Google Scholar 

  24. J. R. Ellis, Bulldog: A Compiler for VLIW Architectures, ACM Doctoral Dissertation Awards, MIT Press, Cambridge, Massachusetts (1985).

    Google Scholar 

  25. R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadek, An efficient method of computing static single assignment form, Conf. Record 16th Ann. ACM Symp. Principles Progr. Lang., Austin, Texas, pp. 25–35 (January 1989).

  26. P. G. Lowney, S. M. Freudenberger, T. J. Karzes, W. D. Lichtenstein, R. P. Nix, J. S. O'Donnell, and J. C. Ruttenberg, The multiflow trace scheduling compiler, J. Supercomputing 7:51–142 (1993).

    Google Scholar 

  27. G. Böckle, Exploitation of Fine-Grain Parallelism, Lecture Notes in Computer Science, Vol. 942, Springer-Verlag, Berlin (1995).

    Google Scholar 

  28. S.-M. Moon and K. Ebcioğlu, A study on the number of memory ports in multiple instruction issue machines, Proc. 26th Ann. Int'l. Symp. Microarchitecture (Micro-26), Austin, Texas, pp. 49–58 (December 1993).

  29. M. Moudgill, J. H. Moreno, K. Ebcioğlu, E. Altman, S. K. Chen, and A. Polyak, Compiler/architecture interaction in a tree-based VLIW processor, Workshop on Inter-action between Compilers and Computer Architecture '97 (in conjunction with HPCA-3), San Antonio, Texas (February 1997).

  30. K. Pingali, M. Beck, R. Johnson, M. Moudgill, and P. Stodghill, Dependence flow graphs: An algebraic approach to program dependencies, Conf. Record 18th Ann. ACM Symp. Principles Progr. Lang., ACM Press, Orlando, Florida (January 1991).

    Google Scholar 

  31. U. Banerjee, Dependence Analysis for Supercomputing, Kluwer Academic Publishers, Boston, Massachusetts (1988).

    Google Scholar 

  32. S. Debray, R. Muth, and M. Weippert, Alias analysis of executable code, Proc. 25th ACM SIGPLAN-SIGACT Symp. Principles Progr. Lang. (POPL '98), ACM Press, San Diego, California, pp. 12–24 (January 1998).

    Google Scholar 

  33. P. Cousot and R. Cousot, Abstract interpretation and applications to logic programs, J. Logic Progr. 13(2-3):103-180 (July 1992).

    Google Scholar 

  34. R. Bodik and S. Anik, Path-sensitive value-flow analysis, Proc. 25th ACM SIGPLAN-SIGACT Symp. on Principles of Progr. Lang. (POPL '98), ACM Press, San Diego, California, pp. 237–251 (January 1998).

    Google Scholar 

  35. W. Amme, P. Braun, F. Thomasset, and E. Zehendner, Data dependence analysis of assembly code, Proc. Int'l. Conf. Parallel Architectures and Compilation Techniques (PACT '98), Paris, pp. 340–347 (October 1998).

  36. P. Braun, W. Amme, F. Thomasset, and E. Zehendner, A data flow framework for analyzing assembly code, Proc. 8th Int'l. Workshop on Compilers for Parallel Computers (CPC 2000), Aussois, France, pp. 163–172 (January 2000).

  37. P. Cousot, Abstract interpretation, ACM Computing Surveys 28(2):324–328 (June 1996).

    Google Scholar 

  38. S. Novack and A. Nicolau, A hierarchical approach to instruction level parallelization, IJPP 23(1):35–62 (February 1995).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Amme, W., Braun, P., Thomasset, F. et al. Data Dependence Analysis of Assembly Code. International Journal of Parallel Programming 28, 431–467 (2000). https://doi.org/10.1023/A:1007588710878

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1007588710878