Open Access Open Access  Restricted Access Subscription or Fee Access

ARM Assembler Using Python

Akshat Baheti, Dev Patwa

Abstract


An assembler is a programme that converts fundamental computer instructions into a bit pattern that can be used by the comp uter's processor to perform basic functions. These instructions are referred to as "assembler language" by some and "assembly language" by others. The ARM (Advanced RISC Machine) assembler is implemented in Python scripting language in this project. Assembly code is executed by processors inside a native executable, which is a low-level programming language that directly manipulates registers and memory. Assembly code is preserved as binary data in its assembled form, and there exist processor manuals that explain how to convert each instruction into bytes of data. Because it is a RISC (Reduced Instruction Set Computing) processor, ARM has a smaller instruction set (100 or fewer instructions) and more general-purpose registers than CISC. Unlike Intel, ARM uses only register-based instructions and a Load/Store memory paradigm for memory access, meaning that only Load/Store instructions can access memory.

This means that on an ARM processor, incrementing a 32-bit number at a specific memory location would necessitate three different types of instructions (load, increment, and store) to load the value into a register, increment it within the register, and then save it back to memory from the register.


Full Text:

PDF

References


Ren, Y., Zhou, Y., Liu, Y., Jin, M., and Liu, H. (2014). “Adaptive Object Impedance Control of Dual-Arm Cooperative Humanoid Manipulators,” in Proceedings of the World Congress on Intelligent Control and Automation (WCICA), 2015-March, 3333–3339

W. Zhu, “Teaching assembly programming for arm-based microcontrollers in a professional development kit,” in 2017 IEEE International Conference on Microelectronic Systems Education (MSE), 2017, pp. 23–26.

Beyret, B., Shafti, A., and Faisal, A. A. (2019). “Dot-to-dot: Explainable Hierarchical Reinforcement Learning for Robotic Manipulation,” in 2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (IEEE), 5014–5019

Caccavale, F., Chiacchio, P., Marino, A., and Villani, L. (2008). Six-DOF Impedance Control of Dual-Arm Cooperative Manipulators. Ieee/asme Trans. Mechatron. 13, 576–586. doi:10.1109/TMECH.2008.2002816

Caccavale, F., and Villani, L. (2001). “An Impedance Control Strategy for Cooperative Manipulation,” in IEEE/ASME International Conference on Advanced Intelligent Mechatronics, AIM 1, 343–348. doi:10.1109/aim.2001.936478

Clavera, I., Held, D., and Abbeel, P. (2017). “Policy Transfer via Modularity and Reward Guiding,” in 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (IEEE), 1537–1544. doi:10.1109/iros.2017.8205959

End, F., Akrour, R., Peters, J., and Neumann, G. (2017). “Layered Direct Policy Search for Learning Hierarchical Skills,” in 2017 IEEE International Conference on Robotics and Automation (ICRA) (IEEE), 6442–6448.

Erhart, S., Sieber, D., and Hirche, S. (2013). “An Impedance-Based Control Architecture for Multi-Robot Cooperative Dual-Arm mobile Manipulation,” in 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems, Tokyo, Japan, November 3-7, 2013 (IEEE), 315–322. doi:10.1109/IROS.2013.6696370

Heck, D. J. F., Kostic, D., Denasi, A., and Nijmeijer, H. (2013). “Internal and External Force-Based Impedance Control for Cooperative Manipulation,” in European Control Conference, ECC 2013, Zurich, Switzerland, July 17-19, 2013 (IEEE), 2299–2304. doi:10.23919/ecc.2013.6669163

Ibarz, J., Tan, J., Finn, C., Kalakrishnan, M., Pastor, P., and Levine, S. (2021). How to Train Your Robot with Deep Reinforcement Learning: Lessons We Have Learned. Int. J. Robotics Res. 40, 698–721. doi:10.1177/0278364920987859




DOI: https://doi.org/10.37628/jeset.v8i1.1679

Refbacks

  • There are currently no refbacks.