All Projects → coderick14 → ARMed

coderick14 / ARMed

Licence: MIT license
A terminal-based emulator of the ARM instruction set written in Golang

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to ARMed

makeuniversal
Tool to create a Universal Binary version of a Qt distribution.
Stars: ✭ 40 (-37.5%)
Mutual labels:  arm
data-management-zone
Template to deploy the Data Management Zone of Cloud Scale Analytics (former Enterprise-Scale Analytics). The Data Management Zone provides data governance and management capabilities for the data platform of an organization.
Stars: ✭ 142 (+121.88%)
Mutual labels:  arm
asm2cfg
Python command-line tool and GDB extension to view and save x86, ARM and objdump assembly files as control-flow graph (CFG) pdf files
Stars: ✭ 42 (-34.37%)
Mutual labels:  arm
rsync-static
Static RSync binaries compiled for x86, ARM, and ARM64. Useful for running on Android. Built daily
Stars: ✭ 40 (-37.5%)
Mutual labels:  arm
armroper
ARM rop chain gadget searcher
Stars: ✭ 36 (-43.75%)
Mutual labels:  arm
ez-rtos
A micro real-time operating system supporting task switching, delay function, memory allocator and critical section. It is writen on ARM Cortex-M3 assemble language, it runs successfully on STM32F103 MCU.
Stars: ✭ 57 (-10.94%)
Mutual labels:  arm
ECS154B
Materials for ECS 154B at UC Davis
Stars: ✭ 34 (-46.87%)
Mutual labels:  computer-architecture
compv
Insanely fast Open Source Computer Vision library for ARM and x86 devices (Up to #50 times faster than OpenCV)
Stars: ✭ 155 (+142.19%)
Mutual labels:  arm
CorePartition
Universal Cooperative Multithread Lib with real time Scheduler that was designed to work, virtually, into any modern micro controller or Microchip and, also, for user space applications for modern OS (Mac, Linux, Windows) or on FreeRTOS as well. Supports C and C++
Stars: ✭ 18 (-71.87%)
Mutual labels:  arm
Tow-Boot
An opinionated distribution of U-Boot. — https://matrix.to/#/#Tow-Boot:matrix.org?via=matrix.org
Stars: ✭ 338 (+428.13%)
Mutual labels:  arm
Embedded-Linux-Education-Kit
Embedded Linux Education Kit
Stars: ✭ 66 (+3.13%)
Mutual labels:  arm
lava
Read only mirror https://git.lavasoftware.org/lava/lava
Stars: ✭ 59 (-7.81%)
Mutual labels:  arm
Robotic Arm
Forward and Inverse Kinematics for Robotic Manipulator
Stars: ✭ 21 (-67.19%)
Mutual labels:  arm
Robot Arm Write Chinese
使用uArm Swift Pro机械臂写中文-毛笔字
Stars: ✭ 57 (-10.94%)
Mutual labels:  arm
SHA256Hasher
SHA-256 IP core for ZedBoard (Zynq SoC)
Stars: ✭ 25 (-60.94%)
Mutual labels:  arm
STM32Primer2 GNSS Tracker
GNSS Tracker For STM32 Primer2
Stars: ✭ 24 (-62.5%)
Mutual labels:  arm
stm32f103xx
DEPRECATED
Stars: ✭ 31 (-51.56%)
Mutual labels:  arm
discolix
distroless arm docker images
Stars: ✭ 22 (-65.62%)
Mutual labels:  arm
PrntrBoardV2
32-bit 3D Printer controller board using STM32F407 and replaceable TMC2660/2209 stepper drivers.
Stars: ✭ 31 (-51.56%)
Mutual labels:  arm
data-product-analytics
Template to deploy a Data Product for analytics and data science use-cases into a Data Landing Zone of the Data Management & Analytics Scenario (former Enterprise-Scale Analytics). The Data Product template can be used by cross-functional teams to create insights and products for external users.
Stars: ✭ 62 (-3.12%)
Mutual labels:  arm

ARMed


A basic ARM emulator written in Golang

contributions welcome Open Source Love License: MIT GoDoc

ARMed logo

Build instructions

Build from source

Requires Go to be installed and configured

go get github.com/coderick14/ARMed
Download the compiled binary

Just download the binary for your required OS and architecture from releases

Usage

ARMed --help will show all the usage details

ARMed version 1.0
Author : https://github.com/coderick14

ARMed is a very basic emulator of the ARM instruction set written in Golang
USAGE : ARMed [OPTIONS]... SOURCE_FILE

--all 		show all register values after an instruction, with updated ones in color
--end 		show updated registers only once, at the end of the program. Overrides --all
--no-log 	suppress logs of statements being executed
--help 		display help

Found a bug? Feel free to raise an issue on https://github.com/coderick14/ARMed
Contributions welcome :)

Contributions

Found a bug? Or maybe add support for some more instructions? Feel free to open up a pull request or raise an issue!!


ARMed demo GIF

NOTE : On Windows, if your cmd does not support unicode characters, pipe your output to a file.
ARMed.exe myfile > output.txt

Then view the file in your favourite editor (Notepad++, Wordpad, Sublime Text etc)

Instructions supported in v1.0

INSTRUCTION : ADDITION
Example : ADD X1, X2, X3
Meaning : X1 = X2 + X3
INSTRUCTION : SUBTRACTION
Example : SUB X1, X2, X3
Meaning : X1 = X2 - X3
INSTRUCTION : MULTIPLICATION 
Example : MUL X1, X2, X3
Meaning : X1 = X2 * X3
INSTRUCTION : ADD IMMEDIATE
Example : ADDI X1, X2, #40
Meaning : X1 = X2 + 40
INSTRUCTION : SUB IMMEDIATE
Example : SUBI X1, X2, #40
Meaning : X1 = X2 - 40
INSTRUCTION : ADD AND SET FLAGS
Example : ADDS X1, X2, X3
Meaning : X1 = X2 + X3
Comments : Adds and sets condition codes
INSTRUCTION : SUB AND SET FLAGS
Example : SUBS X1, X2, X3
Meaning : X1 = X2 - X3
Comments : Subtracts and sets condition codes
INSTRUCTION : ADD IMMEDIATE AND SET FLAGS
Example : ADDIS X1, X2, #40
Meaning : X1 = X2 + 40
Comments : Adds constant and sets condition codes
INSTRUCTION : SUB IMMEDIATE AND SET FLAGS
Example : SUBIS X1, X2, #40
Meaning : X1 = X2 - 40
Comments : Subtracts constant and sets condition codes
INSTRUCTION : LOAD
Example : LDUR X1, [X2, #40]
Meaning : X1 = Memory[X2 + 40]
Comments : Word from memory to register
INSTRUCTION : STORE
Example : STUR X1, [X2, #40]
Meaning : Memory[X2 + 40] = X1
Comments : Word from register to memory
INSTRUCTION : LOAD HALFWORD
Example : LDURH X1, [X2, #40]
Meaning : X1 = Memory[X2 + 40]
Comments : Halfword from memory to register
INSTRUCTION : STORE HALFWORD
Example : STURH X1, [X2, #40]
Meaning : Memory[X2 + 40] = X1
Comments : Halfword from register to memory
INSTRUCTION : LOAD BYTE
Example : LDURB X1, [X2, #40]
Meaning : X1 = Memory[X2 + 40]
Comments : Byte from memory to register
INSTRUCTION : STORE BYTE
Example : STURB X1, [X2, #40]
Meaning : Memory[X2 + 40] = X1
Comments : Byte from register to memory
INSTRUCTION : MOVE WITH ZERO
Example : MOVZ X1, 20, LSL 0
Meaning : X1 = 20 or 20*(2^16) or 20*(2^32) or 20*(2^48)
Comments : Loads 16-bit constant, rest zeroes
INSTRUCTION : MOVE WITH KEEP
Example : MOVK X1, 20, LSL 0
Meaning : X1 = 20 or 20*(2^16) or 20*(2^32) or 20*(2^48)
Comments : Loads 16-bit constant, rest unchanged
INSTRUCTION : LOGICAL AND
Example : AND X1, X2, X3
Meaning : X1 = X2 & X3
Comments : Bitwise-And of X2 and X3, stores result in X1
INSTRUCTION : LOGICAL OR
Example : ORR X1, X2, X3
Meaning : X1 = X2 | X3
Comments : Bitwise-Or of X2 and X3, stores result in X1
INSTRUCTION : LOGICAL EXCLUSIVE-OR
Example : EOR X1, X2, X3
Meaning : X1 = X2 ^ X3
Comments : Bitwise-Xor of X2 and X3, stores result in X1
INSTRUCTION : LOGICAL AND IMMEDIATE
Example : ANDI X1, X2, #20
Meaning : X1 = X2 & 20
Comments : Bitwise-And of X2 with a constant, stores result in X1
INSTRUCTION : LOGICAL OR IMMEDIATE
Example : ORRI X1, X2, #20
Meaning : X1 = X2 | 20
Comments : Bitwise-Or of X2 with a constant, stores result in X1
INSTRUCTION : LOGICAL EXCLUSIVE-OR IMMEDIATE
Example : EORI X1, X2, #20
Meaning : X1 = X2 ^ 20
Comments : Bitwise-Xor of X2 with a constant, stores result in X1
INSTRUCTION : LOGICAL LEFT SHIFT
Example : LSL X1, X2, #10
Meaning : X1 = X2 << 10
Comments : Left shifts X2 by a constant, stores result in X1
INSTRUCTION : LOGICAL RIGHT SHIFT
Example : LSR X1, X2, #10
Meaning : X1 = X2 >> 10
Comments : Right shifts X2 by a constant, stores result in X1
INSTRUCTION : COMPARE AND BRANCH ON EQUAL 0
Example : CBZ X1, label
Meaning : if (X1 == 0) go to label
Comments : Equal 0 test; PC-relative branch
INSTRUCTION : COMPARE AND BRANCH ON NOT EQUAL 0
Example : CBNZ X1, label
Meaning : if (X1 != 0) go to label
Comments : NotEqual 0 test; PC-relative branch
INSTRUCTION : CONDITIONAL BRANCH
Example : B.cond label
Meaning : if (condition true) go to label
Comments : Test condition codes; if true, then branch
INSTRUCTION : UNCONDITIONAL BRANCH
Example : B label
Meaning : go to label
Comments : Branch to PC-relative target address
INSTRUCTION : UNCONDITIONAL BRANCH TO REGISTER
Example : BR LR
Meaning : go to address stored in LR
Comments : Branch to address stored in register. Used for switch, procedure return
INSTRUCTION : UNCONDITIONAL BRANCH WITH LINK
Example : BL label
Meaning : X30 = PC + 4; go to label
Comments : For procedure call (PC-relative)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].