Help Programming ARM7TDMI-S in Assembly

In summary, if you are interested in programming the ARM7TDMI-S in assembly, I recommend checking out ARM's website, getting a copy of the ARM7TDMI-S Technical Reference Manual, and searching for on-line classes.
  • #1
JohnSmith0909
12
1
Hello friends,

I'm looking to program the ARM7TDMI-S in assembly. Can anyone recommend any good development boards? Can anyone recommend an IDE? Can anyone recommend a textbook that would be good for leaning how to program this processor in Assembly? I know various other programming languages but have never learned ARM assembly.

Thanks and let me know.
 
Last edited:
Computer science news on Phys.org
  • #2
I'd recommend checking out ARM's website.
 
  • #4
The ARM7 architecture is nearly 30 years old so I think you are going to struggle finding usable resources for it. Why are you interested in this? Do you have any assembly language experience? Do you have any RISC assembly language experience?
 
  • #5
Hey thanks. I'm interested in it because it was the cpu used in the Nintendo Gameboy advance. I'd like to learn reverse engineering of games on it and just programming it in general. I've been using Ghidrea to break down the ROMs to raw assembly code and trying to understand them but it's so many functions.
.I don't have any Arm assembly experience. So I was hoping somebody could recommend like a good textbook on this as well as a development board?

I do have knowledge of other programming languages but not assembly.
 
  • #6
JohnSmith0909 said:
I don't have any Arm assembly experience.
Following up on @pbuk's question, do you have an assembly programming experience? It's quite different from programming in higher-level languages.

There aren't a lot of textbooks on ARM programming out there, but I found a website (http://www.davespace.co.uk/arm/introduction-to-arm/books.html) that lists three resources
  • ARM System Developers Guide
  • ARM System-on-Chip Architecture (2nd ed.)
  • ARM Architecture Reference Manual (2nd ed.)
 
  • #7
JohnSmith0909 said:
I've been using Ghidrea to break down the ROMs to raw assembly code and trying to understand them but it's so many functions.
Once you get an assembly language listing, are you able to follow what different blocks of the code are doing? Can you work out excactly whate each instruction does?
Have you got a copy of the Instruction Set Reference? It contains all the detail you need.
https://www.ecs.csun.edu/~smirzaei/docs/ece425/arm7tdmi_instruction_set_reference.pdf
 
  • Like
Likes sysprog
  • #8
Hello friends, I am able to figure out what different pieces of code are doing. Is anyone able to point me towards perhaps a fully online class on ARM assembly from a college or university that I can take?
 
  • #10
YoshiMoshi said:
Hello friends, I am able to figure out what different pieces of code are doing. Is anyone able to point me towards perhaps a fully online class on ARM assembly from a college or university that I can take?

Regarding the developer's kit, it should be something built around a good microcontroller, e.g. the NXP LPC2300 (link is to a Power Point Presentation pdf).

Perhaps also check out hitex.com ##-## you could start here: Hitex Indsider's Guide (pdf) to the LPC2300 microcontroller). Hitex offers free webinars and priced training courses, mostly in German, but some in English.

You can learn a lot about embedded systems ##-## RTOS, interrupts, etc. ##-## while doing all of your coding in C language; however, your ambitious reverse engineering project will require strong assembly language skills . . .
 

1. How can I get started with programming ARM7TDMI-S in Assembly?

To get started with programming ARM7TDMI-S in Assembly, you will need a development board or emulator that supports ARM7TDMI-S architecture, an ARM assembler, and a text editor. You can also refer to online tutorials and documentation to learn the basics of ARM assembly language.

2. What are the main features of the ARM7TDMI-S architecture?

The ARM7TDMI-S architecture is a 32-bit RISC (Reduced Instruction Set Computing) architecture. It has a 3-stage pipeline, 37 general purpose registers, and supports both little-endian and big-endian byte ordering.

3. How do I write and compile an ARM7TDMI-S assembly program?

To write an ARM7TDMI-S assembly program, you will need to use ARM assembly language syntax. Once you have written your program, you can use an ARM assembler, such as GNU Assembler (GAS), to compile it. The resulting object file can then be linked and executed on an ARM7TDMI-S compatible system.

4. What are some common instructions used in ARM7TDMI-S assembly programming?

Some common instructions used in ARM7TDMI-S assembly programming include data processing instructions (such as ADD, SUB, and MOV), branching instructions (such as B and BL), and load/store instructions (such as LDR and STR). There are also specific instructions for handling interrupts and exceptions.

5. Are there any resources available for debugging ARM7TDMI-S assembly programs?

Yes, there are various tools and resources available for debugging ARM7TDMI-S assembly programs. Some popular options include GDB (GNU Debugger), which is a command-line debugger, and ARM's RealView Debugger, which is a graphical debugger. Additionally, there are online communities and forums where you can seek help from experienced programmers.

Similar threads

  • Programming and Computer Science
Replies
16
Views
2K
  • Science and Math Textbooks
Replies
4
Views
1K
  • Science and Math Textbooks
Replies
7
Views
664
  • STEM Academic Advising
Replies
10
Views
1K
  • Electrical Engineering
Replies
10
Views
2K
Replies
7
Views
240
  • Programming and Computer Science
Replies
16
Views
2K
  • Programming and Computer Science
Replies
8
Views
1K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
6
Views
1K
  • Programming and Computer Science
Replies
14
Views
2K
Back
Top