Abstract
In this paper we present a method for flow-sensitive, context-insensitive probabilistic alias analysis at the assembly level. A memory disambiguation algorithm is also developed for revealing the probability of two registers holding the same memory location. The alias analysis and memory disambiguation algorithms are implemented based on the Diablo post-link optimizer. Experimental results show that the technique can estimate the probabilities that registers refer to the same memory address in benchmark programs with an overall average error of about 6.8%. The post-link optimizer can leverage the obtained quantitative information to facilitate aggressive analyses and optimizations.
Similar content being viewed by others
References
Aho A.V., Sethi R., Ullman J.D.: Compilers: Principles, Techniques, and Tools. Addison Wesley, Reading (1986)
Allen R., Kennedy K.: Optimizing Compilers for Modern Architectures: A Dependence-based Approach. Morgan Kaufmann, Los Altos (2001)
Amme, W., Braun, P., Zehendner, E., Thomasset, F.: Data dependence analysis of assembly code. In: IEEE PACT, pp. 340–347 (1998)
Balakrishnan, G., Reps, T.W.: Analyzing memory accesses in x86 executables. In: Duesterwald, E. (ed.) CC, Springer, Lecture Notes in Computer Science, vol. 2985, pp. 5–23 (2004)
Burke, M., Carini, P., Choi, J.D., Hind, M.: Flow-insensitive interprocedural alias analysis in the presence of pointers. In: Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing, Columbus, Ohio (1995)
Chen, P.S., Hung, M.Y., Hwang, Y.S., Ju, R.D.C., Lee, J.K.: Compiler support for speculative multithreading architecture with probabilistic points-to analysis. In: Proceedings of ACM SIGPLAN Conference on Principles and Practice of Parallel Programming, pp. 25–36 (2003)
Chen P.S., Hwang Y.S., Ju R.D.C., Lee J.K.: Interprocedural probabilistic pointer analysis. IEEE Trans. Parallel Distrib. Syst. 15(10), 893–907 (2004). doi:10.1109/TPDS.2004.56
Das, M.: Unification-based pointer analysis with directional assignments. In: Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, ACM Sigplan Notices, vol. 35, pp. 35–46 (2000)
De Bus, B., Chanet, D., De Sutter, B., Van Put, L., De Bosschere, K.: The design and implementation of fit: A flexible instrumentation toolkit. In: Proceedings of the 2004 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pp. 29–34. ACM Press, Washington, DC (2004)
Debray, S., Muth, R., Weippert, M.: Alias analysis of executable code. In: POPL ’98: Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 12–24. ACM, New York, NY, USA (1998). doi:10.1145/268946.268948
Deutsch, A.: Interprocedural May-Alias analysis for pointers: Beyond k-limiting. SIGPLAN Notices 29(6), 230–241. Proceedings of the ACM SIGPLAN ’94 Conference on Programming Language Design and Implementation (1994)
Emami, M., Ghiya, R., Hendren, L.J.: Context-sensitive interprocedural Points-to analysis in the presence of function pointers. SIGPLAN Notices 29(6), 242–256. Proceedings of the ACM SIGPLAN ’94 Conference on Programming Language Design and Implementation (1994)
Fernandez, M., Espasa, R.: Speculative alias analysis for executable code. In: 2002 International Conference on Parallel Architectures and Compilation Techniques (2002)
Guo, B., Bridges, M.J., Triantafyllis, S., Ottoni, G., Raman, E., August, D.I.: Practical and accurate low-level pointer analysis. In: CGO, IEEE Computer Society, pp. 291–302 (2005)
Guthaus, M., Ringenberg, J., Ernst, D., Austin, T., Mudge, T., Brown, R.: Mibench: A free, commercially representative embedded benchmark suite. Workload Characterization, Annual IEEE International Workshop 0:3–14 (2001). doi:10.1109/WWC.2001.15
Hecht M.S.: Flow Analysis of Computer Programs. Elsevier Science Ltd., Amsterdam (1977)
Hind, M.: Pointer analysis: haven’t we solved this problem yet? In: PASTE ’01: Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pp. 54–61. ACM, New York, NY, USA (2001). doi:10.1145/379605.379665
Hoeflinger, J.P.: Interprocedural parallelization using memory classification analysis. PhD thesis, Champaign, IL, USA, adviser-Padua, David A. (1998)
Hwang, Y.S., Chen, P.S., Lee, J.K., Ju, R.D.C.: Probabilistic points-to analysis. In: Proceedings of the 2001 International Workshop on Languages and Compilers for Parallel Computing (2001)
Ju R.D.C., Collard J.F., Oukbir K.: Probabilistic memory disambiguation and its application to data speculation. SIGARCH Comput. Archit. News 27(1), 27–30 (1999). doi:10.1145/309758.309769
Landi, W., Ryder, B.G.: A safe approximate algorithm for interprocedural pointer aliasing. SIGPLAN Notices 27(7):235–248. Proceedings of the ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation (1992)
Muchnick S.: Advanced Compiler Design and Implementation. Morgan Kaufmann, Los Altos (1997)
Muth, R., Debray, S.K., Watterson, S., Bosschere, K.D.: Alto: a link-time optimizer for the compaq alpha. In: Software-Practice and Experience (2001)
Nicolau A.: Run-time disambiguation: Coping with statically unpredictable dependencies. IEEE Trans. Comput. 38(5), 633–678 (1989)
Paek Y., Hoeflinger J., Padua D.: Efficient and precise array access analysis. ACM Trans. Program. Lang. Syst. (TOPLAS) 24(1), 65–109 (2002). doi:10.1145/509705.509708
Ramalingam, G.: Data flow frequency analysis. In: Proceedings of the ACM SIGPLAN ’96 Conference on Programming Language Design and Implementation, pp. 267–277. ACM Press, New york (1996). doi:10.1145/231379.231433
Rauchwerger, L.: Run-time parallelization: Its time has come. In: Special Issue on Languages and Compilers for Parallel Computers (1998)
Reps, T.W., Balakrishnan, G.: Improved memory-access analysis for x86 executables. In: Hendren, L.J. (ed.) CC, Springer, Lecture Notes in Computer Science, vol. 4959, pp. 16–35 (2008)
Rogers A., Carlisle M.C., Reppy J.H., Hendren L.J.: Supporting dynamic data structures on distributed-memory machines. ACM Trans. Program. Lang. Syst. (TOPLAS) 17(2), 233–263 (1995). doi:10.1145/201059.201065
Rohou, E., Bodin, F., Seznec, A., Fol, G.L., Charot, F., Raimbault, F.: Salto: System for assembly-language transformation and optimization (1996)
Ruf, E.: Context-insensitive alias analysis reconsidered. SIGPLAN Notices 30(6), 13–22. Proceedings of the ACM SIGPLAN ’95 Conference on Programming Language Design and Implementation (1995)
Rugina, R., Rinard, M.: Pointer analysis for multithreaded programs. In: Proceedings of the ACM SIGPLAN ’99 Conference on Programming Language Design and Implementation, pp 77–90. ACM Press, New york (1999). doi:10.1145/301618.301645
Rus S., Rauchwerger L., Hoeflinger J.: Hybrid analysis: Static & dynamic memory reference analysis. Int. J. Parallel Program. 31(4), 251–283 (2003). doi:10.1023/A:1024597010150
Silberschatz A., Galvin P.B., Gagne G.: Operating System Concepts. John Wiley & Sons Inc., New York, NY, USA (2001)
Silva, J.D., Steffan, J.G.: A probabilistic pointer analysis for speculative optimizations. In: Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (2006)
Steensgaard, B.: Points-to analysis in almost linear time. In: Conference Record of POPL ’96: 23nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 32–41. St. Petersburg Beach, Florida (1996)
Van Put, L., Chanet, D., De Bus, B., De Sutter, B., De Bosschere, K.: Diablo: A reliable, retargetable and extensible link-time rewriting framework. In: Proceedings of the 2005 IEEE International Symposium On Signal Processing And Information Technology, pp. 7–12. IEEE, Athens (2005)
Wagner, T.A., Maverick, V., Graham, S.L., Harrison, M.A.: Accurate static estimators for program optimization. In: PLDI ’94: Proceedings of the ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation, pp. 85–06, ACM, New York, NY, USA (1994)
Wilson, R.P., Lam, M.S.: Efficient context-sensitive pointer analysis for c programs. In: Proceedings of the Conference on Programming Language Design and Implementation, pp. 1–12. ACM Press, New York (1995). doi:10.1145/207110.207111
Wolfe M.: High Performance Compilers for Parallel Computing. Addison-Wesley Longman Publishing Co. Inc., Boston, MA, USA (1996)
Zima H., Chapman B.: Supercompilers for Parallel and Vector Computers. ACM, New York, NY, USA (1991)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Lu, YM., Chen, PS. Probabilistic Alias Analysis of Executable Code. Int J Parallel Prog 39, 663–693 (2011). https://doi.org/10.1007/s10766-010-0157-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-010-0157-y