arm/asm.ss
#lang scheme/base

(require "../asm.ss")

;; ARM assembler

;; http://simplemachines.it/doc/arm_inst.pdf


(instruction-set


 ;; PAGE 13.

 ;; dpr = Data Processing / PSR Transfer
 ;; c = opcode
 ;; n = Rn
 ;; d = Rd
 ;; r = operand
 
 (dpr (i c s n d) "00 i cccc s nnnn dddd rrrrrrrr rrrrrrrr")
  
 

 ;; f = file register
 ;; d = destination register
 ;; w = base register
 ;; b = 0 for word op
 ;; b = 1 for byte op
 ;; q = destination address mode
 ;; k = literal operand
 
;;  (add   (b f d)       "1011 0100 0bdf ffff ffff ffff")   ;; d = f + WREG
;;  (addl  (b k d)       "1011 0000 0bkk kkkk kkkk dddd")   ;; Wd = #10 + Wd
;;  (addls (b w q k d)   "0100 0www wbqq qddd d11k kkkk")   ;;
;;  (add3  (b w q d p s) "0100 0www wbqq qddd dppp ssss")
 
;;  (addac (a)           "1100 1011 a000 0000 0000 0000")

;;  (addc   (b f d)       "1011 0100 1bdf ffff ffff ffff")
;;  (addcl  (b k d)       "1011 0000 1bkk kkkk kkkk dddd")
;;  (addcls (b w q k d)   "0100 1www wbqq qddd d11k kkkk")
;;  (addc3  (b w q d p s) "0100 1www wbqq qddd dppp ssss")


;;  (_file  (o b f d)       "oooo oooo obdf ffff ffff ffff")
;;  (_lit10 (o b k d)       "oooo oooo obkk kkkk kkkk dddd")
;;  (_lit5  (o b w q k d)   "oooo owww wbqq qddd d11k kkkk")
;;  (_alu3  (o b w q d p s) "oooo owww wbqq qddd dppp ssss")
 
 
 )