Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Abstract machine
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Implementation == Any implementation of an abstract machine in the case of physical implementation (in [[Hardware description language|hardware]]) uses some kind of physical device (mechanical or electronic) to execute the instructions of a [[programming language]]. An abstract machine, however, can also be implemented in [[software]] or [[firmware]] at levels between the abstract machine and underlying physical device.<ref name=":3">{{Citation |last1=Gabbrielli |first1=Maurizio |title=Abstract Machines |date=2010 |url=http://link.springer.com/10.1007/978-1-84882-914-5_1 |work=Programming Languages: Principles and Paradigms |pages=1β25 |place=London |publisher=Springer London |doi=10.1007/978-1-84882-914-5_1 |isbn=978-1-84882-913-8 |access-date=2022-05-16 |last2=Martini |first2=Simone}}</ref> * [[Hardware description language|Implementation in hardware]]: The direct implementation of abstract machine in hardware is a matter of using physical devices such as [[Memory cell (computing)|memory]], [[Arithmetic logic unit|arithmetic]] and [[Logic gate|logic circuits]], buses, etc., to implement a physical machine whose machine language coincides with the [[programming language]]. Once constructed, it would be virtually hard to change such a machine.<ref name=":3" /> A [[Central processing unit|CPU]] may be thought of as a concrete hardware realisation of an abstract machine, particularly the [[Processor (computing)|processor's design]].<ref>{{Cite report |last1=Bair |first1=Ray |last2=Chien |first2=Andrew |last3=Cook |first3=Jeanine |last4=Donofrio |first4=Dave |last5=Grider |first5=Gary |last6=Kuehn |first6=Jeff |last7=Moore |first7=Shirley |last8=Shalf |first8=John |last9=Vetter |first9=Jeff |date=2018-02-01 |title=Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing |doi=10.2172/1733300 |osti=1733300 |url=http://dx.doi.org/10.2172/1733300|type=Technical report|publisher=U.S. Department of Energy Office of Scientific and Technical Information}}</ref> * [[Software|Simulation using software]]: Implementing an abstract machine with software entails writing programmes in a different [[Programming language|language]] to implement the [[Data structure|data structures]] and [[Algorithm|algorithms]] needed by the abstract machine. This provides the most flexibility since programmes implementing abstract machine constructs can be easily changed.<ref name=":3" /> An abstract machine implemented as a software simulation, or for which an [[Interpreter (computing)|interpreter]] exists, is called a [[virtual machine]].<ref name=":0">{{Cite web |title=abstract machine from FOLDOC |url=http://foldoc.org/Abstract+machine |access-date=2021-08-07 |website=foldoc.org}}</ref> * [[Firmware|Emulation using firmware]]: Firmware implementation sits between hardware and software implementation. It consists of [[microcode]] simulations of [[Data structure|data structures]] and [[Algorithm|algorithms]] for abstract machines.<ref name=":3" /> [[Microcode]] allows a computer programmer to write machine [[Machine code|instructions]] without needing to fabricate [[Electronic circuit|electrical circuitry]].<ref>{{Cite book |last1=Gee |first1=J. |last2=Melvin |first2=S. W. |last3=Patt |first3=Y. N. |title=Proceedings of the 19th annual workshop on Microprogramming |chapter=The implementation of Prolog via VAX 8600 microcode |date=1986 |chapter-url=http://dx.doi.org/10.1145/19551.19538 |pages=68β74 |location=New York, New York, USA |publisher=ACM Press |doi=10.1145/19551.19538|isbn=081860736X |s2cid=3846072 }}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)