0 conocimiento básico de compilación lenguaje C incluye la llamada a la función suma

0 en la zanja el desarrollo incrustado primero! llamadas a programa sencillo C invencibles ensamblador lograr entero complemento, hay sombras de esta vida, es probable que sea una sola instrucción Google Baidu buscar en los resultados, el aprendizaje nunca ha sido tan humilde, así Qaq

Proyectar probablemente un largo camino:

1585922229474

1585922304963

add10.s

;routine for the addition of many integers.
;R0 is the counter of the loop.
;R2 is the pointer of array element. R3 is the value of array element pointed by R2.
;R4 is the low word of the sum,and R5 is the high word. 

;N   EQU 10
	AREA addEX01,CODE,READONLY
	ENTRY
	EXPORT add10
add10
	;MOV  R0,#N
	MOV  R4,#0
	MOV  R5,#0
	ADDS R4,#0
	LDR  R2,=adddata10
addloop01
	LDR  R3,[R2]
	ADDS.W R4,R4,R3
	ADCS.W R5,R5,#0
	ADD  R2,#4
	SUBS.W  R0, R0, #1
    BNE  addloop01

	BX LR
	
	AREA adddat0,DATA,READWRITE
adddata10 DCD 0x70,0x30,0x20,0x40,0x35,0x65,0x55,0x75,0x25,0x60
	END

main.c

void add10(int K);

int main(void)
{
	add10(1);

    return 0;
}

Una de la manera más rápida es entender el programa de leer el programa existente, primer vistazo add.s código

; Rutina para añadir una pluralidad de números enteros.

; R0 es un contador de bucles.

; R2 es un elementos de la matriz puntero. R3 es el valor del elemento de matriz señalado a R2.

; Y R4 es un menor, R5 es alta.


N EQU 10; valor N se define como 10
la AREA addEX01, CODE, la READONLY
la ENTRADA
la EXPORTACIÓN ADD10

ADD10; nombre de la función
MOV R0, # N; R0 = N
MOV R4, # 0; R4 = 0
MOV R5, # 0; R5 = 0
el ADDS R4, # 0; R4 + = valor de 00 a R4 son sumadas, en el registro R4,
LDR R2, = adddata10; en una dirección R2 de la variable de adddata10


Resumen: El número # es un momento oportuno, MOV es la dirección de un registro a otro registro, ADDS es la adición de dos registros asignados a otro registro. Esta función se inicializa en el registro R0 R4 R5 0


addloop01
la LDR R3, [R2]; R2 es el valor almacenado en R3
ADDS.W R4, R4, R3; R4 adición de valor al valor en el R3, R4, en el registro
ADCS.W R5, R5 , # 0; el valor 0 y se añade R5 en el registro R4,
el ADD R2, # 4, el valor R2 y 4, además, almacenar el resultado en el R2
SUBS.W R0, R0, # 1; el valor de decremento R0. 1
BNE addloop01


Resumen: ADDS.W de W: usuario (gran angular) para especificar las instrucciones sufijo usos del compilador de 32 bits de ARM por .W

ADDS es un sumador de 32 dígitos, la bandera bit de acarreo C sin afectar el valor del resultado del cálculo, el sumador ADCS es mayor que 32 bits, los 32 bits inferiores del resultado de la suma de la influencia del valor del bit de bandera C (como un valor de acarreo) 32 tienen un alto número de bits añadido a una operación de suma para ir, y también lo hacen el número de alta sumador 32.

END: Este es un nivel limitado de la persona usuaria Qaq quieren dejar con este código carreteras explicación para obtener la más mínima recibo

Supongo que te gusta

Origin www.cnblogs.com/lightice/p/12629450.html
Recomendado
Clasificación