{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:23Z","timestamp":1779836723364,"version":"3.53.1"},"reference-count":0,"publisher":"Cambridge University Press (CUP)","issue":"1","license":[{"start":{"date-parts":[[2002,1,9]],"date-time":"2002-01-09T00:00:00Z","timestamp":1010534400000},"content-version":"unspecified","delay-in-days":8,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2002,1]]},"abstract":"<jats:p>This paper presents STAL, a variant of Typed Assembly Language with constructs and \n\ntypes to support a limited form of stack allocation. As with other statically-typed low-level \n\nlanguages, the type system of STAL ensures that a wide class of errors cannot occur at \n\nrun time, and therefore the language can be adapted for use in certifying compilers where \n\nsecurity is a concern. Like the Java Virtual Machine Language (JVML), STAL supports \n\nstack allocation of local variables and procedure activation records, but unlike the JVML, \n\nSTAL does not pre-suppose fixed notions of procedures, exceptions, or calling conventions. \n\nRather, compiler writers can choose encodings for these high-level constructs using the more \n\nprimitive RISC-like mechanisms of STAL. Consequently, some important optimizations that \n\nare impossible to perform within the JVML, such as tail call elimination or callee-saves \n\nregisters, can be easily expressed within STAL.<\/jats:p>","DOI":"10.1017\/s0956796801004178","type":"journal-article","created":{"date-parts":[[2008,8,8]],"date-time":"2008-08-08T10:02:48Z","timestamp":1218189768000},"page":"43-88","source":"Crossref","is-referenced-by-count":39,"title":["Stack-based typed assembly language"],"prefix":"10.1017","volume":"12","author":[{"given":"GREG","family":"MORRISETT","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"KARL","family":"CRARY","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"NEAL","family":"GLEW","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"DAVID","family":"WALKER","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2002,1,9]]},"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796801004178","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:35:38Z","timestamp":1779834938000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796801004178\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2002,1]]},"references-count":0,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2002,1]]}},"alternative-id":["S0956796801004178"],"URL":"https:\/\/doi.org\/10.1017\/s0956796801004178","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2002,1]]}}}