{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T11:06:41Z","timestamp":1770289601641,"version":"3.49.0"},"reference-count":29,"publisher":"Cambridge University Press (CUP)","license":[{"start":{"date-parts":[[2020,8,20]],"date-time":"2020-08-20T00:00:00Z","timestamp":1597881600000},"content-version":"unspecified","delay-in-days":232,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2020]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>In \u2018Calculating Correct Compilers\u2019 (Bahr &amp; Hutton, 2015), we developed a new approach to calculating compilers directly from specifications of their correctness. Our approach only required elementary reasoning techniques and has been used to calculate compilers for a wide range of language features and their combination. However, the methodology was focused on stack-based target machines, whereas real compilers often target register-based machines. In this article, we show how our approach can naturally be adapted to calculate compilers for register machines.<\/jats:p>","DOI":"10.1017\/s0956796820000209","type":"journal-article","created":{"date-parts":[[2020,8,20]],"date-time":"2020-08-20T08:00:12Z","timestamp":1597910412000},"source":"Crossref","is-referenced-by-count":3,"title":["Calculating correct compilers II: Return of the register machines"],"prefix":"10.1017","volume":"30","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-1600-8261","authenticated-orcid":false,"given":"PATRICK","family":"BAHR","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9584-5150","authenticated-orcid":false,"given":"GRAHAM","family":"HUTTON","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2020,8,20]]},"reference":[{"key":"S0956796820000209_ref29","doi-asserted-by":"publisher","DOI":"10.1145\/582153.582179"},{"key":"S0956796820000209_ref28","first-page":"496","article-title":"Trans. Program. Lang.","volume":"4","author":"Wand","year":"1982","journal-title":"Syst"},{"key":"S0956796820000209_ref25","doi-asserted-by":"publisher","DOI":"10.1145\/800194.805852"},{"key":"S0956796820000209_ref24","unstructured":"PEPM. (2020) Workshop on Partial Evaluation and Program Manipulation. Available at: https:\/\/popl20.sigplan.org\/home\/pepm-2020."},{"key":"S0956796820000209_ref2","doi-asserted-by":"publisher","DOI":"10.7146\/brics.v10i14.21784"},{"key":"S0956796820000209_ref6","doi-asserted-by":"publisher","DOI":"10.1145\/800230.806984"},{"key":"S0956796820000209_ref5","unstructured":"Bahr, P. & Hutton, G. (2020) Supplementary Material for Calculating Correct Compilers II. Available at: https:\/\/github.com\/pa-ba\/reg-machine."},{"key":"S0956796820000209_ref23","first-page":"51","article-title":"Proving compiler correctness in a mechanized logic","volume":"7","author":"Milner","year":"1972","journal-title":"Mach. Intell"},{"key":"S0956796820000209_ref14","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006363"},{"key":"S0956796820000209_ref27","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-02880-3_8"},{"key":"S0956796820000209_ref7","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706312"},{"key":"S0956796820000209_ref26","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(90)90056-J"},{"key":"S0956796820000209_ref16","doi-asserted-by":"publisher","DOI":"10.1145\/2535838.2535841"},{"key":"S0956796820000209_ref17","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/6.4.308"},{"key":"S0956796820000209_ref4","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796815000180"},{"key":"S0956796820000209_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-07151-0_14"},{"key":"S0956796820000209_ref10","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010095604496"},{"key":"S0956796820000209_ref9","unstructured":"DeepSpec. (2020) The Science of Deep Specification. Available at: https:\/\/deepspec.org\/."},{"key":"S0956796820000209_ref1","doi-asserted-by":"publisher","DOI":"10.1145\/888251.888254"},{"key":"S0956796820000209_ref15","volume-title":"Partial Evaluation and Automatic Program Generation","author":"Jones","year":"1993"},{"key":"S0956796820000209_ref18","unstructured":"Lattner, C. (2008) Introduction to the LLVM compiler system. In Proceedings of International Workshop on Advanced Computing and Analysis Techniques in Physics Research."},{"key":"S0956796820000209_ref19","doi-asserted-by":"publisher","DOI":"10.1145\/1538788.1538814"},{"key":"S0956796820000209_ref11","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30936-1_10"},{"key":"S0956796820000209_ref12","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796817000120"},{"key":"S0956796820000209_ref13","doi-asserted-by":"crossref","unstructured":"Hutton, G. & Wright, J. (2006) Calculating an exceptional machine. In Trends in Functional Programming Volume 5, Loidl, H.-W. (ed). Intellect. Selected papers from the Fifth Symposium on Trends in Functional Programming.","DOI":"10.2307\/j.ctv36xw0k5.7"},{"key":"S0956796820000209_ref8","doi-asserted-by":"publisher","DOI":"10.1145\/966221.966235"},{"key":"S0956796820000209_ref20","doi-asserted-by":"publisher","DOI":"10.1090\/psapm\/019\/0242403"},{"key":"S0956796820000209_ref22","doi-asserted-by":"publisher","DOI":"10.1007\/3540543961_7"},{"key":"S0956796820000209_ref21","unstructured":"Meijer, E. (1992) Calculating Compilers. PhD Thesis, Katholieke Universiteit Nijmegen."}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796820000209","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,6]],"date-time":"2023-10-06T01:53:11Z","timestamp":1696557191000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796820000209\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"references-count":29,"alternative-id":["S0956796820000209"],"URL":"https:\/\/doi.org\/10.1017\/s0956796820000209","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020]]},"article-number":"e25"}}