Reversible Machine Code and Its Abstract Processor Architecture

  • Holger Bock Axelsen
  • Robert Glück
  • Tetsuo Yokoyama
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4649)


A reversible abstract machine architecture and its reversible machine code are presented and formalized. For machine code to be reversible, both the underlying control logic and each instruction must be reversible. A general class of machine instruction sets was proven to be reversible, building on our concept of reversible updates. The presentation is abstract and can serve as a guideline for a family of reversible processor designs. By example, we illustrate programming principles for the abstract machine architecture formalized in this paper.


Control Logic Abstract Machine Program Counter Machine Code Execution Step 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abramov, S.M., Glück, R.: The universal resolving algorithm and its correctness: inverse computation in a functional language. Science of Computer Programming 43(2-3), 193–229 (2002)zbMATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Bennett, C.H.: Logical reversibility of computation. IBM Journal of Research and Development 17(6), 525–532 (1973)zbMATHCrossRefGoogle Scholar
  3. 3.
    Cezzar, R.: Design of a processor architecture capable of forward and reverse execution. In: Proceeding of IEEE SOUTHEASTCON 1991, vol. 2, pp. 885–890 (1991)Google Scholar
  4. 4.
    De Vos, A., Van Rentergem, Y., De Keyser, K.: The decomposition of an arbitrary reversible logic circuit. Journal of Physics A: Mathematical and General 39(18), 5015–5035 (2006)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Desoete, B., De Vos, A.: A reversible carry-look-ahead adder using control gates. Integration, the VLSI Journal 33(1), 89–104 (2002)zbMATHCrossRefGoogle Scholar
  6. 6.
    Feynman, R.P.: Reversible computation and the thermodynamics of computing (ch. 5). In: Feynman Lectures on Computation, pp. 137–184. Addison-Wesley, London, UK (1996)Google Scholar
  7. 7.
    Frank, M.P.: Reversibility for Efficient Computing. PhD thesis, MIT (1999)Google Scholar
  8. 8.
    Frank, M.P., Rixner, S.: Tick: A simple reversible processor (6.371 project report). Online term paper, MIT EECS Department (1996)Google Scholar
  9. 9.
    Fredkin, E., Toffoli, T.: Conservative logic. Intl. J. Theor. Phy. 21, 219–253 (1982)zbMATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Glück, R., Kawabe, M.: A program inverter for a functional language with equality and constructors. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 246–264. Springer, Heidelberg (2003)Google Scholar
  11. 11.
    Glück, R., Kawabe, M.: A method for automatic program inversion based on LR(0) parsing. Fundamenta Informaticae 66(4), 367–395 (2005)zbMATHMathSciNetGoogle Scholar
  12. 12.
    Hall, J.S.: A reversible instruction set architecture and algorithms. In: Workshop on Physics and Computation. Proceedings, pp. 128–134. IEEE Press, New York (1994)CrossRefGoogle Scholar
  13. 13.
    Landauer, R.: Irreversibility and heat generation in the computing process. IBM Journal of Research and Development 5(3), 183–191 (1961)MathSciNetzbMATHGoogle Scholar
  14. 14.
    Mogensen, T.AE.: Semi-inversion of guarded equations. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, pp. 189–204. Springer, Heidelberg (2005)Google Scholar
  15. 15.
    Reilly, E.D., Federighi, F.D.: On reversible subroutines and computers that run backwards. Communications of the ACM 8(9), 557–558 (1965)CrossRefGoogle Scholar
  16. 16.
    Vieri, C.J.: Reversible Computer Engineering and Architecture. PhD thesis, MIT (1999)Google Scholar
  17. 17.
    Vieri, C.J., Ammer, M.J., Frank, M.P., Magoulis, N., Knight, T.: A fully reversible asymptotically zero energy processor. In: Proceedings of the ISCA workshop (1998)Google Scholar
  18. 18.
    Winskel, G.: The Formal Semantics of Programming Languages. MIT Press, Cambridge (1993)zbMATHGoogle Scholar
  19. 19.
    Yokoyama, T., Glück, R.: A reversible programming language and its invertible self-interpreter. In: Partial Evaluation and Program Manipulation. Proceedings, pp. 144–153. ACM Press, New York (2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Holger Bock Axelsen
    • 1
  • Robert Glück
    • 1
  • Tetsuo Yokoyama
    • 1
  1. 1.DIKU, Dept. of Computer Science, University of Copenhagen, DK-2100 CopenhagenDenmark

Personalised recommendations