⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tea-atmega161.s

📁 SOSSE,最简单的实现smart卡的教学用程序 内有电路图
💻 S
字号:
	/* Compile arguments: -mmcu=atmega161 -Os -mcall-prologues */	/* Changes are marked with "(C)". */	.file	"tea.c"	.arch atmega161__SREG__ = 0x3f__SP_H__ = 0x3e__SP_L__ = 0x3d__tmp_reg__ = 0__zero_reg__ = 1_PC_ = 2	.text.global	tea_func	.type	tea_func,@functiontea_func:/* prologue: frame size=0 */	push r12	push r13	push r14	push r15	push r16	push r17/* prologue end (size=6) *//*	r25:r24: &in	r23:r22: &sum	r21:r20: &k (network byte order)*/	movw r30,r24	/* Setup Address */	movw r12,r22	movw r22,r20	ld r14,Z		/* Load in */	ldd r15,Z+1	ldd r16,Z+2	ldd r17,Z+3	movw r20,r16	/* Copy in */	movw r18,r14	ldi r25,4		/* in<<4 */1:	lsl r18	rol r19	rol r20	rol r21	dec r25	brne 1b	movw r30,r22	/* Setup address */	ld r27,Z		/* (C) Load k[0] (in network byte order) */	ldd r26,Z+1		/* (C) */	ldd r25,Z+2		/* (C) */	ldd r24,Z+3		/* (C) */	add r18,r24		/* Add k[0] */	adc r19,r25	adc r20,r26	adc r21,r27	movw r30,r12	/* Setup address */	ld r24,Z		/* Load sum */	ldd r25,Z+1	ldd r26,Z+2	ldd r27,Z+3	add r24,r14		/* Add in */	adc r25,r15	adc r26,r16	adc r27,r17	eor r18,r24		/* xor */	eor r19,r25	eor r20,r26	eor r21,r27	ldi r24,5		/* in>>5 */1:	lsr r17	ror r16	ror r15	ror r14	dec r24	brne 1b	movw r30,r22	/* Setup address */	ldd r27,Z+4		/* (C) Load k[2] (in network byte order) */	ldd r26,Z+5		/* (C) */	ldd r25,Z+6		/* (C) */	ldd r24,Z+7		/* (C) */	add r14,r24		/* Add in>>5 */	adc r15,r25	adc r16,r26	adc r17,r27	eor r18,r14		/* xor */	eor r19,r15	eor r20,r16	eor r21,r17	movw r24,r20	/* return */	movw r22,r18/* epilogue: frame size=0 */	pop r17	pop r16	pop r15	pop r14	pop r13	pop r12	ret/* epilogue end (size=7) */.Lfe1:	.size	tea_func,.Lfe1-tea_func.global	tea_enc	.type	tea_enc,@functiontea_enc:/* prologue: frame size=12 */	ldi r26,lo8(12)	ldi r27,hi8(12)	ldi r30,pm_lo8(.L_tea_enc_body)	ldi r31,pm_hi8(.L_tea_enc_body)	jmp __prologue_saves__+22.L_tea_enc_body:/* prologue end (size=6) *//*	r25:r24 &v (network byte order)	r23:r22 &k (network byte order)*/	movw r16,r24	/* r17:r16 = &v */	movw r14,r22	/* r15:r14 = &k */	std Y+1,__zero_reg__	std Y+2,__zero_reg__	std Y+3,__zero_reg__	std Y+4,__zero_reg__	movw r30,r16	/* Z = &v */	ld r27,Z		/* (C) y=v[0] */	ldd r26,Z+1		/* (C) */	ldd r25,Z+2		/* (C) */	ldd r24,Z+3		/* (C) */	std Y+9,r24	std Y+10,r25	std Y+11,r26	std Y+12,r27    ldd r27,Z+4		/* (C) z=v[1] */    ldd r26,Z+5		/* (C) */    ldd r25,Z+6		/* (C) */    ldd r24,Z+7		/* (C) */	std Y+5,r24	std Y+6,r25	std Y+7,r26	std Y+8,r27	ldi r18,lo8(31)	/* n=ROUNDS */	mov r13,r18.L6:	ldd r24,Y+1	ldd r25,Y+2	ldd r26,Y+3	ldd r27,Y+4	subi r24,lo8(-(-1640531527))	sbci r25,hi8(-(-1640531527))	sbci r26,hlo8(-(-1640531527))	sbci r27,hhi8(-(-1640531527))	std Y+1,r24	std Y+2,r25	std Y+3,r26	std Y+4,r27	movw r20,r14	movw r22,r28	subi r22,lo8(-(1))	sbci r23,hi8(-(1))	movw r24,r28	adiw r24,5	call tea_func	movw r18,r22	movw r20,r24	ldd r24,Y+9	ldd r25,Y+10	ldd r26,Y+11	ldd r27,Y+12	add r24,r18	adc r25,r19	adc r26,r20	adc r27,r21	std Y+9,r24	std Y+10,r25	std Y+11,r26	std Y+12,r27	movw r20,r14	subi r20,lo8(-(8))	sbci r21,hi8(-(8))	movw r22,r28	subi r22,lo8(-(1))	sbci r23,hi8(-(1))	movw r24,r28	adiw r24,9	call tea_func	movw r26,r24	movw r24,r22	ldd r18,Y+5	ldd r19,Y+6	ldd r20,Y+7	ldd r21,Y+8	add r18,r24	adc r19,r25	adc r20,r26	adc r21,r27	std Y+5,r18	std Y+6,r19	std Y+7,r20	std Y+8,r21	mov r24,r13	dec r13	tst r24	brne .L6	ldd r24,Y+9	ldd r25,Y+10	ldd r26,Y+11	ldd r27,Y+12	movw r30,r16	st Z,r27		/* (C) v[0]=y; v[1]=z; */	std Z+1,r26		/* (C) */	std Z+2,r25		/* (C) */	std Z+3,r24		/* (C) */	std Z+4,r21		/* (C) */	std Z+5,r20		/* (C) */	std Z+6,r19		/* (C) */	std Z+7,r18		/* (C) *//* epilogue: frame size=12 */	ldi r30,7	adiw r28,12	jmp __epilogue_restores__+22/* epilogue end (size=4) */.Lfe2:	.size	tea_enc,.Lfe2-tea_enc.global	tea_dec	.type	tea_dec,@functiontea_dec:/* prologue: frame size=12 */	ldi r26,lo8(12)	ldi r27,hi8(12)	ldi r30,pm_lo8(.L_tea_dec_body)	ldi r31,pm_hi8(.L_tea_dec_body)	jmp __prologue_saves__+22.L_tea_dec_body:/* prologue end (size=6) *//*	r25:r24 &v (network byte order)	r23:r22 &k (network byte order)*/	movw r16,r24	/* r17:r16 = &v */	movw r14,r22	/* r15:r14 = &k */	ldi r24,lo8(-957401312)	/* sum = DELTA*ROUNDS; */	ldi r25,hi8(-957401312)	ldi r26,hlo8(-957401312)	ldi r27,hhi8(-957401312)	std Y+1,r24	std Y+2,r25	std Y+3,r26	std Y+4,r27	movw r30,r16	ld r27,Z		/* (C) y=v[0]; */	ldd r26,Z+1		/* (C) */	ldd r25,Z+2		/* (C) */	ldd r24,Z+3		/* (C) */	std Y+5,r24	std Y+6,r25	std Y+7,r26	std Y+8,r27	ldd r27,Z+4		/* (C) z=v[1]; */	ldd r26,Z+5		/* (C) */	ldd r25,Z+6		/* (C) */	ldd r24,Z+7		/* (C) */	std Y+9,r24	std Y+10,r25	std Y+11,r26	std Y+12,r27	ldi r19,lo8(31)	mov r13,r19.L12:	movw r20,r14	subi r20,lo8(-(8))	sbci r21,hi8(-(8))	movw r22,r28	subi r22,lo8(-(1))	sbci r23,hi8(-(1))	movw r24,r28	adiw r24,5	call tea_func	movw r18,r22	movw r20,r24	ldd r24,Y+9	ldd r25,Y+10	ldd r26,Y+11	ldd r27,Y+12	sub r24,r18	sbc r25,r19	sbc r26,r20	sbc r27,r21	std Y+9,r24	std Y+10,r25	std Y+11,r26	std Y+12,r27	movw r20,r14	movw r22,r28	subi r22,lo8(-(1))	sbci r23,hi8(-(1))	movw r24,r28	adiw r24,9	call tea_func	movw r26,r24	movw r24,r22	ldd r18,Y+5	ldd r19,Y+6	ldd r20,Y+7	ldd r21,Y+8	sub r18,r24	sbc r19,r25	sbc r20,r26	sbc r21,r27	std Y+5,r18	std Y+6,r19	std Y+7,r20	std Y+8,r21	ldd r24,Y+1	ldd r25,Y+2	ldd r26,Y+3	ldd r27,Y+4	subi r24,lo8(-(1640531527))	sbci r25,hi8(-(1640531527))	sbci r26,hlo8(-(1640531527))	sbci r27,hhi8(-(1640531527))	std Y+1,r24	std Y+2,r25	std Y+3,r26	std Y+4,r27	mov r24,r13	dec r13	tst r24	brne .L12	movw r30,r16	st Z,r21		/* (C) */	std Z+1,r20		/* (C) */	std Z+2,r19		/* (C) */	std Z+3,r18		/* (C) */	ldd r24,Y+9	ldd r25,Y+10	ldd r26,Y+11	ldd r27,Y+12	std Z+4,r27		/* (C) */	std Z+5,r26		/* (C) */	std Z+6,r25		/* (C) */	std Z+7,r24		/* (C) *//* epilogue: frame size=12 */	ldi r30,7	adiw r28,12	jmp __epilogue_restores__+22/* epilogue end (size=4) */.Lfe3:	.size	tea_dec,.Lfe3-tea_dec

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -