; more efficient solution AREA myadd, CODE, READONLY EXPORT add_64 add_64 ; get double word operand 1 ; NB a2 receives first memory word (= low word) ldmia a2, {a4, a2} ; get double word operand 2 ; NB a3 recives first memory word (= high word) ldmia a3, {ip, a3} ; add low words + set carry ADDS a2,a2,a3 ; add high wordswith carry adcs a4,a4,ip ; store result stmia a1, { a4,a2} ; a2 contains low word result and is stored first ; return state of carry flag MOV a1, #0 adc a1, a1, #0 MOV pc,lr END