8051 Emulator Online

0 views
Skip to first unread message

Cary Polachek

unread,
Aug 5, 2024, 5:36:41 AM8/5/24
to ririredesp
Thisis the command emu8051 that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

OnWorks is a free online VPS hosting provider that gives cloud services like free workstations, online AntiVirus, free VPN secure proxies, and free personal and business email. Our free VPS can be based on CentOS, Fedora, Ubuntu and Debian. Some of them are customized to be like Windows online or MacOS online.


This is a simulator of the 8051/8052 microcontrollers. For sake of simplicity, I'm only referring to 8051, although the emulator can emulate either one. For more information about the 8-bit chip(s), please check out www.8052.com or look up the data sheets. Intel, being the originator of the architecture, naturally has information as well.


The 8051 is a pretty easy chip to play with, in both hardware and software. Hence, it's a good chip to use as an example when teaching about computer hardware. Unfortunately, the simulators in use in my school were a bit outdated, so I decided to write a new one.


The scope of the emulator is to help test and debug 8051 assembler programs. What is particularily left out is clock-cycle exact simulation of processor pins. (For instance, MUL is a 48-clock operation on the 8051. On which clock cycle does the CPU read the operands? Or write the result?). Such simulation might help in designing some hardware, but for most uses it is unneccessary and complicated.


The emulator is designed to have two separate modules, consisting of the emulator core and separate front-end. This enables the creation of different kinds of front-ends. For instance, this lets the user use the emulator core as a DLL in a C/C++ application which can simulate other kinds of hardware (such as leds, switches, displays, audio, or whatnot).


Simulation accuracy is valued over speed. Nevertheless, already at v.0.1 the emulator could run at over-realtime speeds on a P4/2.6GHz (running the emulator at over 12MHz). Based on profiler output, over half of the processing time is wasted on pipeline trashing when branching to the opcode functions. This could possibly be helped by JITing the code, but that is considered unneccessary at this point. Also, CPUs with shorter pipelines are not harmed by this behavior as badly.


Support for all sorts of 8051 memory combinations - 128 or 256B internal RAM, 0-64k of external RAM and 0-64k of ROM. External RAM and ROM may even point at the same memory, enabling self-modifying code.


Like many organizations, the FSF is suffering financially. Operational costs have risen and revenue has not kept up, because people all over the world are going through the same challenges as we are. The FSF has an important role to play for computer users globally for years to come, and we still have a lot of work to do.


Emu8051 is a simulator/emulator for the Intel 8051 family ofmicrocontrollers. It allows the developers to simulate 8051microcontrollers to test their code and debug it. The program canload Intel HEX files.


The copyright and license notices on this page only apply to thetext on this page. Any software or copyright-licenses or othersimilar notices described in this text has its own copyright noticeand license, which can usually be found in the distribution or licensetext itself.





We offer a variety of 8051software which Rigel writes and maintains on our web site. Our online software with all of the help files, examples, and related text files may be used without fee by students, faculty and staff of academic institutions and by individuals for non-commercial use. For distribution rights and all other users, including corporate use, please contact:

Rigel Corporation, PO Box 90040, Gainesville, FL 32607



We update our software regularly. Please come back and check out the latest version available here.


Attention: Installing our software constitutes your acceptance of the terms and conditions of the license agreement. Please read the license agreement before installation. Other rules and regulations of installing this software are:


1. You acknowledge you may not modify, disassemble, reverse engineer, translate, sub-license, rent or transfer electronically software from one computer to another, or make it available through a timesharing service or network of computers.


2. No liability for consequential damages. In no event shall Rigel Corporation or its suppliers be liable to you for any consequential, special, incidental, or indirect damages of any kind arising out of the delivery, performance, or use of the software. Even if Rigel Corporation has been advised of the possibility of such damages. In no event will Rigel Corporations' liability for any claim, whether in contract, tort, or any other theory of liability, exceed the any license fee paid by you.




Symbolic execution [1] has become an increasingly important technique for automated software analysis, e.g., generating test cases, finding bugs, and detecting security vulnerabilities [2,3,4,5,6,7,8,9,10,11]. There have been many recent approaches to symbolic execution [12,13,14,15,16,17,18,19,20,21,22]. Generally speaking, these approaches can be classified into two categories: online symbolic execution (e.g., BitBlaze [4], klee [5], and \(\textsc s^2\textsc e\) [6]), and concolic execution (a.k.a., offline symbolic execution, e.g., CUTE [2], DART [3], and SAGE [7]). Online symbolic execution closely couples Symbolic Execution Engines (see) with the System Under Test (sut) and explore all possible execution paths of sut online at once. On the other hand, concolic execution decouples see from the sut through traces, which concretely runs a single execution path of a sut and then symbolically executes it.


Both online and offline symbolic execution are facing new challenges, as computer software is experiencing an explosive growth, both in complexities and diversities, ushered in by the proliferation of cloud computing, mobile computing, and Internet of Things. Two major challenges are: (1) the sut involves many types of software for different hardware platforms and (2) the sut involves many components distributed on different machines and as a whole the sut cannot fit in any see. In this paper, we focus on how to extend concolic execution to satisfy the needs for analyzing emerging software systems. There are two major observations behind our efforts on extending concolic execution:


A manager, which archives the captured execution traces and test cases, schedules concrete and symbolic execution, and implements policies for selecting the traces and test cases to be analyzed and explored next.


We have implemented the crete framework on top of qemu [23] and klee, particularly the tracing plugin for qemu, the replayer for klee, and the manager that coordinates qemu and klee to exchange runtime traces and test cases and manages the policies for prioritizing runtime traces and test cases. To validate crete extensibility, we have also implemented a tracing plugin for the 8051 emulator [24]. The trace-based architecture of crete has enabled us to integrate such tracing frontends seamlessly. To demonstrate its effectiveness and capability, we evaluated crete on GNU Coreutils programs and TianoCore utility programs for UEFI BIOS, and compared with klee and angr, which are two state-of-art open-source symbolic executors for automated program analysis at source-level and binary-level.


Versatile concolic testing. crete provides an open and highly extensible architecture allowing easy integration of different concrete and symbolic execution environments, which communicate with each other only by exchanging standardized traces and test cases. This significantly improves applicability and flexibility of concolic execution to emerging platforms and is amenable to leveraging new advancements in symbolic execution.


Standardizing runtime traces. crete defines a standard binary-level trace format, which is llvm based, self-contained and composable. Such a trace is captured during concrete execution, representing an execution path of a sut. It contains succinct and sufficient information for reproducing the execution path in other program analysis environment, such as for symbolic execution. Having standardized traces minimizes the need of converting traces for different analysis environment and provides a basis for common trace-related optimizations.


Implemented a prototype. We have implemented crete with klee as the see backend and multiple concrete execution frontends such as qemu and 8051 Emulator. crete achieved comparable code coverage on Coreutils binaries as klee directly analyzing at source-level and generally outperformed angr. crete also found 84 distinct and previously-unreported crashes on widely-used and extensively-tested utility programs for UEFI BIOS development. We also make crete implementation publicly available to the community at github.com/SVL-PSU/crete-dev.


DART [3] and CUTE [2] are both early representative work on concolic testing. They operate on the source code level. crete further extends concolic testing and targets close-source binary programs. SAGE [7] is a Microsoft internal concolic testing tool that particularly targets at X86 binaries on Windows. crete is platform agnostic: as long as a trace from concrete execution can be converted into the llvm-based trace format, it can be analyzed to generate test cases.


klee [5] is a source-level symbolic executor built on the llvm infrastructure [25] and is capable of generating high-coverage test cases for C programs. crete adopts klee as its see, and extends it to perform concolic execution on standardized binary-level traces. \(\textsc s^2\textsc e\) [6] provides a framework for developing tools for analyzing close-source software programs. It augments a Virtual Machine (vm) with a see and path analyzers. It features a tight coupling of concrete and symbolic execution. crete takes a loosely coupled approach to the interaction of concrete and symbolic execution. crete captures complete execution traces of the sut online and conducts whole trace symbolic analysis off-line.

3a8082e126
Reply all
Reply to author
Forward
0 new messages