Over a million developers have joined DZone.

Implementing Simple Sort Algorithms in ARM Assembly (Part 1)

Implementing common sort algorithms on Raspberry Pi in ARM Assembly, starting with Simple Sort.

· IoT Zone

Access the survey results 'State of Industrial Internet Application Development' to learn about latest challenges, trends and opportunities with Industrial IoT, brought to you in partnership with GE Digital.

A while back I started to learn some ARM Assembly on the Raspberry Pi (out of curiosity, for no other better reason). I thought it would be interesting to couple this with re-learning some of the basic/standard/common algorithms at the same time, such as common sort algorithms.

So as my first step, since this is turning out to be far more work than I expected (!), here’s my ARM ASM source so far to iterate through a list of 4 byte integer values and print the values to the console using C’s printf. I’ll post further updates as I make progress:

.global main
main:
  push {ip, lr}
  MOV R6, #0 @offset to data
loop:
  LDR R0, =output @load addr of output string
  LDR R5, =nums @ addr of string to R5
  LDR R4,[R5,R6] @load current num from R5 with offset R6
  MOV R1,R4 @move num for output
  BL printf
  CMP R6,#16 @ 0 plus 4*4bytes for 5 entries in array
  ADD R6,R6, #4 @inc offset by 4 bytes
  BNE loop
_exit:
  POP {ip, lr}
  MOV R1, #0
  MOV R7, #1
  SWI 0
nums:
.word 5,2,7,1,8
.data
output:
.asciz "%d\n"

I’m sure there’s better ways I can approach this limited code so far, but I’ll come back and revisit this again later. If anyone wants to pull or browse the source so far (and other snippets), it’s on GitHub here: https://github.com/kevinhooke/learning-arm-asm

The IoT Zone is brought to you in partnership with GE Digital.  Discover how IoT developers are using Predix to disrupt traditional industrial development models.

Topics:
raspberry pi ,arm ,assembly ,algorithms ,simple sort

Published at DZone with permission of Kevin Hooke, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}