生蚝什么时候最肥| 是什么品牌| 梅毒长什么样| 什么办法退烧快| 为什么叫马桶| 吃完海鲜不能吃什么水果| r表示什么| 空腹吃西红柿有什么危害| loewe是什么牌子| 去医院检查是否怀孕挂什么科| 动容什么意思| 月经发黑是什么原因| 肠胃炎可以吃什么水果| 避孕药叫什么| 头痒用什么东西洗头最好| 121是什么意思| 来例假喝红糖水有什么好处| 眼睛黄是什么病| 什么洗面奶好用| 汗疱疹用什么药好| 什么时候割包皮最好| 跖疣是什么原因引起的| 二尖瓣反流什么意思| 吃什么对牙齿好| 小孩出虚汗是什么原因| 真好是什么意思| 撒旦和路西法什么关系| 马齿苋能治什么病| 阴虱用什么药治疗| 近视眼镜是什么镜| 小孩咳嗽吃什么药效果最好| 自欺欺人是什么生肖| 酒糟鼻子是什么原因引起的| 15岁可以做什么兼职| 身经百战是什么意思| 属猴的跟什么属相最配| 与虎谋皮是什么意思| 大将军衔相当于什么官| 软化血管吃什么药最好| 毛片是什么意思| mice是什么意思| 脚脱皮用什么药膏有效| 小手指麻木是什么原因引起的| 双子座和什么星座最不配| 晦气是什么意思| dr拍片是检查什么的| 血常规可以查出什么病| 大腿痛挂什么科| 君子兰的寓意是什么| 什么是c刊| 猴子是什么颜色| 君子兰的寓意是什么| 吃什么容易拉肚子| 不出汗是什么原因| 新疆古代叫什么| 糖类抗原125是什么意思| 吃降压药有什么副作用| 书字五行属什么| 月经9天了还没干净是什么原因| 肩膀酸痛是什么原因| 结婚的礼数都有什么| 985大学什么意思| 宝宝不长肉是什么原因| 双向情感障碍吃什么药| 白粉病用什么药| 三剑客是什么意思| 蛤蚧是什么动物| 什么雨| 丙氨酸氨基转移酶高是什么原因| 踩雷是什么意思| 胃疼肚子疼是什么原因| 软开是什么| 黑洞是什么| 热闹非凡是什么意思| 皮肤黑穿什么颜色的衣服显白| 2月27是什么星座| 的近义词是什么| 牙齿一吸就出血是什么原因| 食糜是什么意思| 小资生活是什么意思| 无私的动物是什么生肖| 梦见种菜是什么意思| hcg翻倍不好是什么原因造成的| paba是什么药| 一个黑一个今念什么| 早搏吃什么药效果好| 什么清什么秀| 冒菜和麻辣烫有什么区别| 宾格是什么意思| 耷拉的近义词是什么| 什么叫比例| 满月红鸡蛋用什么染| 魂牵梦绕的意思是什么| 赊事勿取是什么意思| 骨化是什么意思| 龙眼树上的臭虫叫什么| 什么叫假性发烧| 什么叫放射性疼痛| 尿急尿频吃什么药| 怀孕第一个月有什么症状| 左手发麻是什么病征兆| 华胥是什么意思| 男属猴和什么属相最配| 美甲做多了有什么危害| 1月15号是什么星座| p是什么意思医学| 和亲是什么意思| 榴莲和什么水果相克| 颠鸾倒凤什么意思| 4.15是什么星座| 三个句号代表什么意思| 喝茶失眠是什么原因| 清华大学校长是什么级别| 1948年中国发生了什么| 孕妇梦见蛇代表什么| 12月24是什么星座| 血氧饱和度是什么意思| 夏天为什么不能喝中药| 煞星是什么意思| 827是什么意思| 红斑狼疮的症状是什么| 抗心磷脂抗体是什么意思| 右乳导管扩张什么意思| 镜架什么材质好| 心绞痛什么症状| 数值是什么意思| 吃什么增加免疫力| 单独粘米粉能做什么| 拔罐是什么意思| 大象的耳朵有什么作用| 桃花什么颜色| 奶茶妹是什么意思| 飞机下降时耳朵疼是什么原因| 吃什么补脑子增强记忆力最快| 用黄瓜敷脸有什么功效| 肛裂擦什么药膏| 女流之辈是什么意思| 备孕期间不能吃什么| 膝关节疼痛挂什么科| 生意盎然什么意思| 被臭虫咬了擦什么药| 什么是av| 血管疼是什么原因| 两鬓斑白是什么意思| 凉皮用什么面粉| 孕早期吃什么有利于胎心胎芽发育| 兰台是什么意思| 天降甘霖什么意思| camel是什么颜色| 大好河山是什么生肖| 传媒公司主要做什么| 随喜功德是什么意思| 什么样的人容易抑郁| 哦是什么意思在聊天时| 马齿苋是什么| 漂脱是什么意思| 松花粉对肝有什么好处| 下套什么意思| 检察院是干什么的| 窦性心律逆钟向转位是什么意思| 16 5是什么码| 哈库呐玛塔塔什么意思| 跑完步头疼是为什么| 1988属什么| npn是什么意思| 荷叶加什么减肥最快| 野猪怕什么颜色| 水中毒是什么症状| 口头禅什么意思| 为什么会突然耳鸣| 棘突是什么意思| 简称是什么意思| 柚子是什么季节| 霉菌阴道炎是什么引起的| 子宫粘连是什么原因引起的| 水当当是什么意思| 苏打水有什么作用| 军犬一般是什么品种| 诸侯国是什么意思| amp是什么| 单车是什么意思| 酒不醉人人自醉是什么意思| 马来西亚主食吃什么| 柴米油盐什么意思| 鼻窦炎是什么样子的| 拿什么东西不用手| 奥莱是什么牌子| 三什么道中| 圣大保罗属于什么档次| 中元节与什么生肖有关| 甲亢挂什么科室| 2.10是什么星座| 冰释前嫌什么意思| 物理意义是什么意思| 乙肝大三阳是什么意思| 抑郁看病看什么科| 补蛋白吃什么最好| 今年什么时候入梅| 什么人从来不看医生| 安居乐业什么意思| 小孩指甲有白点是什么原因| 什么叫心脏早搏| 1948属什么生肖| 脂肪肝中医叫什么名字| 阴阳是什么意思| 血糖高什么水果可以吃| 绝经前有什么症状| 姑妈是什么关系| 五谷中的菽是指什么| 月经两个月没来是什么原因| sdeer是什么牌子| 收到是什么意思| 增强免疫力吃什么维生素| 湿气重是什么原因造成的| 肝斑一般在脸上的什么地方| 大作是什么意思| 女人物质是什么意思| 生化流产是什么原因造成的| 鸟为什么会飞| 指甲有竖纹是什么病| 生吃大蒜有什么好处和坏处| 为什么经常头疼| 心境什么意思| 迪卡侬属于什么档次| 经常做噩梦的原因是什么| 为什么女生喜欢腹肌| 什么是偏光镜| 排卵期有什么明显症状| 做脑部检查挂什么科| 直肠壁增厚一般是什么情况| 高反人群一般是什么人| 驾驶证体检挂什么科| 煤气罐在什么情况下会爆炸| 肠梗阻是什么原因引起的| 复出是什么意思| 知行合一什么意思| 三七粉吃了有什么好处| 梦见别人死了是什么预兆| 我用什么才能留住你| lycra是什么面料| 宝宝头发黄是缺什么| 晚上睡觉睡不着是什么原因| 中国梦是什么意思| 指检是什么| 蛇遇猪就得哭什么意思| 脂溢性皮炎是什么症状| 什么路最窄打一生肖| 感冒发烧吃什么好| 空性是什么意思| 头疼嗓子疼吃什么药| 11月29日什么星座| 为什么手上会起小水泡| 冷暖自知的前一句是什么| 唯女子与小人难养也是什么意思| 什么是滑膜炎| 什么是牙齿根管治疗| 第一次查怀孕挂什么科| mid是什么意思| 多吃黄瓜有什么好处和坏处| 运动喝什么水补充能量| 什么药溶血栓最好| 为什么叫五七干校| 吃什么能丰胸| aml是什么意思| 百度Jump to content

口袋跑得快系列游戏的外挂怎么做-APP专用辅助挂

From Wikipedia, the free encyclopedia
百度 汪洋指出,长期以来,各民主党派始终同中国共产党肝胆相照、荣辱与共,为我国革命、建设和改革事业作出了重要贡献。

In computer science, an abstract machine is a theoretical model that allows for a detailed and precise analysis of how a computer system functions.[1] It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware.[2] Abstract machines are "machines" because they allow step-by-step execution of programs; they are "abstract" because they ignore many aspects of actual (hardware) machines.[3] A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems.[2] In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms.[3] This use of abstract machines is fundamental to the field of computational complexity theory, such as with finite state machines, Mealy machines, push-down automata, and Turing machines.[4]

Classification

[edit]

Abstract machines are typically categorized into two types based on the quantity of operations they can execute simultaneously at any given moment: deterministic abstract machines and non-deterministic abstract machines.[2] A deterministic abstract machine is a system in which a particular beginning state or condition always yields the same outputs. There is no randomness or variation in how inputs are transformed into outputs.[5] In contrast, a non-deterministic abstract machine can provide various outputs for the same input on different executions.[2] Unlike a deterministic algorithm, which gives the same result for the same input regardless of the number of iterations, a non-deterministic algorithm takes various paths to arrive to different outputs.[6] Non-deterministic algorithms are helpful for obtaining approximate answers when deriving a precise solution using a deterministic approach is difficult or costly.[7]

A run of a Turing machine

Turing machines, for example, are some of the most fundamental abstract machines in computer science.[2] These machines conduct operations on a tape (a string of symbols) of any length. Their instructions provide for both modifying the symbols and changing the symbol that the machine’s pointer is currently at. For example, a rudimentary Turing machine could have a single command, "convert symbol to 1 then move right", and this machine would only produce a string of 1s.[8] This basic Turing machine is deterministic; however, nondeterministic Turing machines that can execute several actions given the same input may also be built.[2]

Implementation

[edit]

Any implementation of an abstract machine in the case of physical implementation (in 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.[9]

Programming language implementation

[edit]

An abstract machine is, intuitively, just an abstraction of the idea of a physical computer.[13] For actual execution, algorithms must be properly formalised using the constructs offered by a programming language. This implies that the algorithms to be executed must be expressed using programming language instructions.[3] The syntax of a programming language enables the construction of programs using a finite set of constructs known as instructions. Most abstract machines share a program store and a state, which often includes a stack and registers.[9][14] In digital computers, the stack is simply a memory unit with an address register that can count only positive integers (after an initial value is loaded into it). The address register for the stack is known as a stack pointer because its value always refers to the top item on the stack.[15] The program consists of a series of instructions, with a stack pointer indicating the next instruction to be performed. When the instruction is completed, a stack pointer is advanced. This fundamental control mechanism of an abstract machine is also known as its execution loop.[3] Thus, an abstract machine for a programming language is any collection of data structures and algorithms capable of storing and running programs written in the programming language. It bridges the gap between the high level of a programming language and the low level of an actual machine by providing an intermediate language step for compilation. An abstract machine's instructions are adapted to the unique operations necessary to implement operations of a certain source language or set of source languages.[9]

Imperative languages

[edit]

In the late 1950s, the Association for Computing Machinery (ACM) and other allied organisations developed many proposals for Universal Computer Oriented Language (UNCOL), such as Conway's machine. The UNCOL concept is good, but it has not been widely used due to the poor performance of the generated code. In many areas of computing, its performance will continue to be an issue despite the development of the Java Virtual Machine in the late 1990s. Algol Object Code (1964), P4-machine (1976), UCSD P-machine (1977), and Forth (1970) are some successful abstract machines of this kind.[3]

Object-oriented languages

[edit]

Abstract machines for object-oriented programming languages are often stack-based and have special access instructions for object fields and methods. In these machines, memory management is often implicit performed by a garbage collector (memory recovery feature built into programming languages).[16] Smalltalk-80 (1980), Self (1989), and Java (1994) are examples of this implementation.[3]

String processing languages

[edit]

A string processing language is a computer language that focuses on processing strings rather than numbers. There have been string processing languages in the form of command shells, programming tools, macro processors, and scripting languages for decades.[17] Using a suitable abstract machine has two benefits: increased execution speed and enhanced portability. Snobol4 and ML/I are two notable instances of early string processing languages that use an abstract machine to gain machine independence.[3]

Functional programming languages

[edit]
Pictorial representation of a Krivine machine

The early abstract machines for functional languages, including the SECD machine (1964) and Cardelli's Functional Abstract Machine (1983), defined strict evaluation, also known as eager or call-by-value evaluation,[3] in which function arguments are evaluated before the call and precisely once. Recently, the majority of research has been on lazy (or call-by-need) evaluation,[18] such as the G-machine (1984), Krivine machine (1985), and Three Instruction Machine (1986), in which function arguments are evaluated only if necessary and at most once. One reason is because effective implementation of strict evaluation is now well-understood, therefore the necessity for an abstract machine has diminished.[3]

Logical languages

[edit]

Predicate calculus (first order logic) is the foundation of logic programming languages. The most well-known logic programming language is Prolog. The rules in Prolog are written in a uniform format known as universally quantified 'Horn clauses', which means to begin the calculation that attempts to discover a proof of the objective. The Warren Abstract Machine WAM (1983),[3] which has become the de facto standard in Prolog program compilation, has been the focus of most study. It provides special purpose instructions such as data unification instructions and control flow instructions to support backtracking (searching algorithm).[19]

Structure

[edit]

A generic abstract machine is made up of a memory and an interpreter. The memory is used to store data and programs, while the interpreter is the component that executes the instructions included in programs.[9]

The structure of an abstract machine

The interpreter must carry out the operations that are unique to the language it is interpreting. However, given the variety of languages, it is conceivable to identify categories of operations and an "execution mechanism" shared by all interpreters. The interpreter's operations and accompanying data structures are divided into the following categories:[9][20]

  1. Operations for processing primitive data:
  2. Operations and data structures for controlling the sequence of execution of operations;
  3. Operations and data structures for controlling data transfers;
  4. Operations and data structures for memory management.

Processing primitive data

[edit]

An abstract machine must contain operations for manipulating primitive data types such as strings and integers.[9] For example, integers are nearly universally considered a basic data type for both physical abstract machines and the abstract machines used by many programming languages. The machine carries out the arithmetic operations necessary, such as addition and multiplication, within a single time step.[21]

Sequence control

[edit]

Operations and structures for "sequence control" allow controlling the execution flow of program instructions. When certain conditions are met, it is necessary to change the typical sequential execution of a program.[9] Therefore, the interpreter employs data structures (such as those used to store the address of the next instruction to execute) that are modified by operations distinct from those used for data manipulation (for example, operations to update the address of the next instruction to execute).[22]

Controlling data transfers

[edit]

Data transfer operations are used to control how operands and data are transported from memory to the interpreter and vice versa. These operations deal with the store and the retrieval order of operands from the store.[9]

Memory management

[edit]

Memory management is concerned with the operations performed in memory to allocate data and applications. In the abstract machine, data and programmes can be held indefinitely, or in the case of programming languages, memory can be allocated or deallocated using a more complex mechanism.[9]

Hierarchies

[edit]
A hierarchy of abstract machines

Abstract machine hierarchies are often employed, in which each machine uses the functionality of the level immediately below and adds additional functionality of its own to meet the level immediately above. A hardware computer, constructed with physical electronic devices, can be added at the most basic level. Above this level, the abstract microprogrammed machine level may be introduced. The abstract machine supplied by the operating system, which is implemented by a program written in machine language, is located immediately above (or directly above the hardware if the firmware level is not there). On the one hand, the operating system extends the capability of the physical machine by providing higher-level primitives that are not available on the physical machine (for example, primitives that act on files). The host machine is formed by the abstract machine given by the operating system, on which a high-level programming language is implemented using an intermediary machine, such as the Java Virtual machine and its byte code language. The level given by the abstract machine for the high-level language (for example, Java) is not usually the final level of hierarchy. At this point, one or more applications that deliver additional services together may be introduced. A "web machine" level, for example, can be added to implement the functionalities necessary to handle Web communications (communications protocols or HTML code presentation). The "Web Service" level is located above this, and it provides the functionalities necessary to make web services communicate, both in terms of interaction protocols and the behaviour of the processes involved. At this level, entirely new languages that specify the behaviour of so-called "business processes" based on Web services may be developed (an example is the Business Process Execution Language). Finally, a specialised application can be found at the highest level (for example, E-commerce) which has very specific and limited functionality.[9]

See also

[edit]

References

[edit]
  1. ^ Weisstein, Eric W. "Abstract Machine". mathworld.wolfram.com. Retrieved 2025-08-05.
  2. ^ a b c d e f "What is an Abstract Machine?". EasyTechJunkie. Retrieved 2025-08-05.
  3. ^ a b c d e f g h i j Diehl, Stephan; Hartel, Pieter; Sestoft, Peter (May 2000). "Abstract machines for programming language implementation". Future Generation Computer Systems. 16 (7): 739–751. doi:10.1016/S0167-739X(99)00088-6.
  4. ^ "9.1.1: Finite-State Machine Overview". Engineering LibreTexts. 2025-08-05. Retrieved 2025-08-05.
  5. ^ "What is Deterministic System? - Definition from Techopedia". Techopedia.com. 29 August 2019. Retrieved 2025-08-05.
  6. ^ Stearns, Richard E. (January 2003). "Deterministic versus nondeterministic time and lower bound problems". Journal of the ACM. 50 (1): 91–95. doi:10.1145/602382.602409. ISSN 0004-5411. S2CID 2194820.
  7. ^ Armoni, Michal; Gal-Ezer, Judith (December 2007). "Non-determinism: An abstract concept in computer science studies". Computer Science Education. 17 (4): 243–262. Bibcode:2007CSEd...17..243A. doi:10.1080/08993400701442885. ISSN 0899-3408. S2CID 41928460.
  8. ^ Gill, John (December 1977). "Computational Complexity of Probabilistic Turing Machines". SIAM Journal on Computing. 6 (4): 675–695. doi:10.1137/0206049. ISSN 0097-5397.
  9. ^ a b c d e f g h i j k l m Gabbrielli, Maurizio; Martini, Simone (2010), "Abstract Machines", Programming Languages: Principles and Paradigms, London: Springer London, pp. 1–25, doi:10.1007/978-1-84882-914-5_1, ISBN 978-1-84882-913-8, retrieved 2025-08-05
  10. ^ Bair, Ray; Chien, Andrew; Cook, Jeanine; Donofrio, Dave; Grider, Gary; Kuehn, Jeff; Moore, Shirley; Shalf, John; Vetter, Jeff (2025-08-05). Hardware Evaluation: Abstract Machine Models and Proxy Architectures for Exascale Computing (Technical report). U.S. Department of Energy Office of Scientific and Technical Information. doi:10.2172/1733300. OSTI 1733300.
  11. ^ "abstract machine from FOLDOC". foldoc.org. Retrieved 2025-08-05.
  12. ^ Gee, J.; Melvin, S. W.; Patt, Y. N. (1986). "The implementation of Prolog via VAX 8600 microcode". Proceedings of the 19th annual workshop on Microprogramming. New York, New York, USA: ACM Press. pp. 68–74. doi:10.1145/19551.19538. ISBN 081860736X. S2CID 3846072.
  13. ^ "abstract machine". Oxford Reference. Retrieved 2025-08-05.
  14. ^ García-Martín, Julio Manuel; Sutil-Martin, Miguel (August 15, 1999). "The Abstract Machine: A Pattern for Designing Abstract Machines" (PDF). Proceedings of Pattern Languages of Programs '99.
  15. ^ upscfever.com (2025-08-05). "Computer Organization and Architecture (Stack Organization) - UPSC FEVER". upscfever.com. Retrieved 2025-08-05.
  16. ^ "What is Object-Oriented Programming (OOP)?". SearchAppArchitecture. Retrieved 2025-08-05.
  17. ^ "Design considerations for string processing languages", A Study in String Processing Languages, Lecture Notes in Computer Science, vol. 205, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 17–37, 1985, doi:10.1007/3-540-16041-8_2, ISBN 978-3-540-16041-0, retrieved 2025-08-05
  18. ^ Hackett, Jennifer; Hutton, Graham (2025-08-05). "Call-by-need is clairvoyant call-by-value". Proceedings of the ACM on Programming Languages. 3 (ICFP): 1–23. doi:10.1145/3341718. ISSN 2475-1421. S2CID 195782686.
  19. ^ "Prolog | An Introduction". GeeksforGeeks. 2025-08-05. Retrieved 2025-08-05.
  20. ^ Accattoli, Beniamino; Barenbaum, Pablo; Mazza, Damiano (2025-08-05). "Distilling abstract machines". ACM SIGPLAN Notices. 49 (9): 363–376. doi:10.1145/2692915.2628154. ISSN 0362-1340. S2CID 234775413.
  21. ^ baeldung (2025-08-05). "Introduction to Java Primitives | Baeldung". www.baeldung.com. Retrieved 2025-08-05.
  22. ^ Kuchana, Partha (2004), "Interpreter", Software Architecture Design Patterns in Java, Auerbach Publications, doi:10.1201/9780203496213, ISBN 978-0-8493-2142-9

Further reading

[edit]
  • Peter van Emde Boas, Machine Models and Simulations pp. 3–66, appearing in:
Jan van Leeuwen, ed. "Handbook of Theoretical Computer Science. Volume A: Algorithms and Complexity, The MIT PRESS/Elsevier, 1990. ISBN 0-444-88071-2 (volume A). QA 76.H279 1990
feel什么意思 银色山泉香水什么牌子 什么是易经 凌晨四点醒是什么原因 劫是什么意思
为什么流鼻血 瞌睡是什么意思 深水炸弹是什么意思 玫瑰代表什么 周杰伦得了什么病
鲈鱼不能和什么一起吃 产后第一天吃什么最好 癫痫患者不能吃什么 邦字五行属什么 胃酸分泌过多吃什么药
银饰发黑是什么原因 活性炭是什么 凤凰男什么意思 门诊号是什么意思 什么样的葡萄
福布斯是什么意思chuanglingweilai.com 50岁掉牙齿是什么原因hcv9jop3ns5r.cn 见分晓是什么意思hcv8jop1ns9r.cn 什么态度hcv9jop6ns3r.cn 睡前喝蜂蜜水有什么好处ff14chat.com
鱼缸摆放什么位置最佳hcv9jop6ns2r.cn 尿急尿频尿不尽吃什么药hcv9jop5ns3r.cn 崇洋媚外是什么意思hcv8jop1ns2r.cn 吃什么孕酮值可以增高hcv7jop4ns5r.cn 为什么会胎停多数原因是什么hcv8jop6ns2r.cn
什么叫二婚线hcv9jop5ns5r.cn 梦见钓到大鱼是什么意思hcv8jop9ns0r.cn hpv是指什么helloaicloud.com 便秘吃什么润肠通便hcv8jop8ns4r.cn 干咳嗽喉咙痒是什么原因hcv7jop7ns2r.cn
手脚发麻吃什么药hcv7jop6ns8r.cn 后脑勺发热是什么原因hcv9jop6ns4r.cn qs是什么wzqsfys.com 阴道吹气是什么原因hcv9jop5ns5r.cn 胆囊炎吃什么消炎药hlguo.com
百度