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

📄 peripheral_test.objdump

📁 基于fpga和sopc的用VHDL语言编写的EDA的32位Nios CPU嵌入式系统及其DMA设计俄罗斯方块游戏机
💻 OBJDUMP
📖 第 1 页 / 共 5 页
字号:
  800442:	03 98       	pfx %hi(0x60)
  800444:	21 0c       	dec %g1
  800446:	61 7c       	sext8 %g1
  800448:	30 30       	mov %l0,%g1
  80044a:	d0 14       	cmpi %l0,0x6
  80044c:	ec 7e       	skps cc_ls
  80044e:	6e 80       	br 80052c <DoTimerMenu+0x1a8>
  800450:	50 1c       	lsli %l0,0x2
  800452:	22 9a       	pfx %hi(0x4440)
  800454:	01 35       	movi %g1,0x8
  800456:	04 98       	pfx %hi(0x80)
  800458:	01 6c       	movhi %g1,0x0
  80045a:	30 00       	add %l0,%g1
  80045c:	01 b0       	ldp %g1,[%l0,0x0]
  80045e:	c1 7f       	jmp %g1
  800460:	00 30       	nop
		{
		case 'a':
			printf("<space> to show timer, <Esc> to end\n");
  800462:	1f 9a       	pfx %hi(0x43e0)
  800464:	08 34       	movi %o0,0x0
  800466:	04 98       	pfx %hi(0x80)
  800468:	08 6c       	movhi %o0,0x0
  80046a:	d9 98       	pfx %hi(0x1b20)
  80046c:	c1 37       	movi %g1,0x1e
  80046e:	02 98       	pfx %hi(0x40)
  800470:	01 6c       	movhi %g1,0x0
  800472:	e1 7f       	call %g1
  800474:	00 30       	nop
			while(1)
  800476:	ff 9f       	pfx %hi(0xffe0)
  800478:	f0 37       	movi %l0,0x1f
  80047a:	0c 98       	pfx %hi(0x180)
  80047c:	52 36       	movi %l2,0x12
  80047e:	02 98       	pfx %hi(0x40)
  800480:	12 6c       	movhi %l2,0x0
				{
				long timerVal;
				long timerPeriod;

				timer->np_timersnapl = 0;	// snapshot
  800482:	01 34       	movi %g1,0x0
  800484:	81 ac       	stp [%l3,0x4],%g1
				timerVal = (timer->np_timersnapl & 0x0ffff)
  800486:	89 bc       	ldp %o1,[%l3,0x4]
  800488:	09 3a       	and %o1,%l0
  80048a:	a2 bc       	ldp %g2,[%l3,0x5]
  80048c:	02 1e       	lsli %g2,0x10
					+ ((long)timer->np_timersnaph << 16);
				timerPeriod = (timer->np_timerperiodl & 0x0ffff)
  80048e:	4a bc       	ldp %o2,[%l3,0x2]
  800490:	0a 3a       	and %o2,%l0
  800492:	61 bc       	ldp %g1,[%l3,0x3]
  800494:	01 1e       	lsli %g1,0x10
					+ ((long)timer->np_timerperiodh << 16);
	
				printf("Timer State Time=%8ld, Period = %8ld, Status=%d, Control=%d\n",
  800496:	0b bc       	ldp %o3,[%l3,0x0]
  800498:	2c bc       	ldp %o4,[%l3,0x1]
  80049a:	20 9a       	pfx %hi(0x4400)
  80049c:	08 35       	movi %o0,0x8
  80049e:	04 98       	pfx %hi(0x80)
  8004a0:	08 6c       	movhi %o0,0x0
  8004a2:	2a 40       	or %o2,%g1
  8004a4:	d9 98       	pfx %hi(0x1b20)
  8004a6:	c1 37       	movi %g1,0x1e
  8004a8:	02 98       	pfx %hi(0x40)
  8004aa:	01 6c       	movhi %g1,0x0
  8004ac:	e1 7f       	call %g1
  8004ae:	49 40       	or %o1,%g2
					timerVal,timerPeriod,
					timer->np_timerstatus,
					timer->np_timercontrol);

				while((c = rGetChar()) < 0)
  8004b0:	f2 7f       	call %l2
  8004b2:	00 30       	nop
  8004b4:	11 31       	mov %l1,%o0
  8004b6:	11 74       	ext8s %l1,0x0
  8004b8:	21 32       	mov %g1,%l1
  8004ba:	01 74       	ext8s %g1,0x0
  8004bc:	61 7c       	sext8 %g1
  8004be:	01 14       	cmpi %g1,0x0
  8004c0:	e6 7e       	skps cc_ge
  8004c2:	f6 87       	br 8004b0 <DoTimerMenu+0x12c>
  8004c4:	00 30       	nop
					;
				if(c == 27) goto menu;
  8004c6:	61 17       	cmpi %g1,0x1b
  8004c8:	e3 7e       	skps cc_ne
  8004ca:	6b 87       	br 8003a2 <DoTimerMenu+0x1e>
  8004cc:	00 30       	nop
				if(c != ' ') goto menuSwitch;
  8004ce:	01 98       	pfx %hi(0x20)
  8004d0:	01 14       	cmpi %g1,0x0
  8004d2:	e3 7e       	skps cc_ne
  8004d4:	d6 87       	br 800482 <DoTimerMenu+0xfe>
  8004d6:	21 32       	mov %g1,%l1
  8004d8:	b4 87       	br 800442 <DoTimerMenu+0xbe>
  8004da:	00 30       	nop
				}

		case 'b':
			timer->np_timercontrol = (timer->np_timercontrol & 3)
  8004dc:	21 bc       	ldp %g1,[%l3,0x1]
  8004de:	00 98       	pfx %hi(0x0)
  8004e0:	61 38       	and %g1,0x3
  8004e2:	81 04       	addi %g1,0x4
  8004e4:	21 ac       	stp [%l3,0x1],%g1
				+ np_timercontrol_start_mask;
			break;
  8004e6:	22 80       	br 80052c <DoTimerMenu+0x1a8>
  8004e8:	00 30       	nop

		case 'c':
			timer->np_timercontrol = (timer->np_timercontrol & 3)
  8004ea:	21 bc       	ldp %g1,[%l3,0x1]
  8004ec:	00 98       	pfx %hi(0x0)
  8004ee:	61 38       	and %g1,0x3
  8004f0:	01 05       	addi %g1,0x8
  8004f2:	21 ac       	stp [%l3,0x1],%g1
				+ np_timercontrol_stop_mask;
			break;
  8004f4:	1b 80       	br 80052c <DoTimerMenu+0x1a8>
  8004f6:	00 30       	nop

		case 'd':
			timer->np_timercontrol = timer->np_timercontrol 
  8004f8:	21 bc       	ldp %g1,[%l3,0x1]
  8004fa:	00 98       	pfx %hi(0x0)
  8004fc:	41 40       	or %g1,0x2
  8004fe:	21 ac       	stp [%l3,0x1],%g1
				| np_timercontrol_cont_mask;
			break;
  800500:	15 80       	br 80052c <DoTimerMenu+0x1a8>
  800502:	00 30       	nop
	
		case 'e':
			timer->np_timercontrol = timer->np_timercontrol 
  800504:	21 bc       	ldp %g1,[%l3,0x1]
  800506:	00 98       	pfx %hi(0x0)
  800508:	41 3c       	andn %g1,0x2
  80050a:	21 ac       	stp [%l3,0x1],%g1
				& ~np_timercontrol_cont_mask;
			break;
  80050c:	0f 80       	br 80052c <DoTimerMenu+0x1a8>
  80050e:	00 30       	nop

		MenuCase('f',DoEnableTimerInterrupt);
  800510:	15 98       	pfx %hi(0x2a0)
  800512:	81 36       	movi %g1,0x14
  800514:	02 98       	pfx %hi(0x40)
  800516:	01 6c       	movhi %g1,0x0
  800518:	e1 7f       	call %g1
  80051a:	00 30       	nop
  80051c:	07 80       	br 80052c <DoTimerMenu+0x1a8>
  80051e:	00 30       	nop
		MenuCase('g',DoDisableTimerInterrupt);
  800520:	16 98       	pfx %hi(0x2c0)
  800522:	41 37       	movi %g1,0x1a
  800524:	02 98       	pfx %hi(0x40)
  800526:	01 6c       	movhi %g1,0x0
  800528:	e1 7f       	call %g1
  80052a:	00 30       	nop
		}
	
	if(c != 'q')
  80052c:	21 32       	mov %g1,%l1
  80052e:	01 74       	ext8s %g1,0x0
  800530:	61 7c       	sext8 %g1
  800532:	03 98       	pfx %hi(0x60)
  800534:	21 16       	cmpi %g1,0x11
  800536:	e2 7e       	skps cc_eq
  800538:	34 87       	br 8003a2 <DoTimerMenu+0x1e>
  80053a:	00 30       	nop
		goto menu;
	}
  80053c:	df 7f       	ret
  80053e:	a0 7d       	restore

00800540 <MyTimerISR>:

typedef struct
	{
	long interruptCount;	// increment with each interrupt
	np_timer *timer;
	} TimerISRContext;

static TimerISRContext gC = {0,0};

void MyTimerISR(int context)
	{
  800540:	17 78       	save %sp,0x17
  800542:	10 33       	mov %l0,%i0
	TimerISRContext *c;

	c = (TimerISRContext *)context;

	c->interruptCount++;
  800544:	09 b0       	ldp %o1,[%l0,0x0]
  800546:	29 04       	inc %o1
  800548:	09 a0       	stp [%l0,0x0],%o1

	printf("(timer #%d!)",c->interruptCount);
  80054a:	23 9a       	pfx %hi(0x4460)
  80054c:	88 34       	movi %o0,0x4
  80054e:	04 98       	pfx %hi(0x80)
  800550:	08 6c       	movhi %o0,0x0
  800552:	d9 98       	pfx %hi(0x1b20)
  800554:	c1 37       	movi %g1,0x1e
  800556:	02 98       	pfx %hi(0x40)
  800558:	01 6c       	movhi %g1,0x0
  80055a:	e1 7f       	call %g1
  80055c:	00 30       	nop

	c->timer->np_timerstatus = 0;	// write anything to clear the IRQ
  80055e:	30 b0       	ldp %l0,[%l0,0x1]
  800560:	01 34       	movi %g1,0x0
  800562:	01 a0       	stp [%l0,0x0],%g1
	}
  800564:	df 7f       	ret
  800566:	a0 7d       	restore

00800568 <DoEnableTimerInterrupt>:

// Turn on interrupts: enable interrupt bit, and
// install a user ISR

void DoEnableTimerInterrupt(void)
	{
  800568:	17 78       	save %sp,0x17
	gC.timer = na_timer1;
  80056a:	4e 9a       	pfx %hi(0x49c0)
  80056c:	10 35       	movi %l0,0x8
  80056e:	04 98       	pfx %hi(0x80)
  800570:	10 6c       	movhi %l0,0x0
  800572:	49 98       	pfx %hi(0x920)
  800574:	01 34       	movi %g1,0x0
  800576:	04 98       	pfx %hi(0x80)
  800578:	01 6e       	movhi %g1,0x10
  80057a:	21 a0       	stp [%l0,0x1],%g1
	nr_installuserisr(na_timer1_irq,MyTimerISR,(long)&gC);
  80057c:	28 36       	movi %o0,0x11
  80057e:	15 98       	pfx %hi(0x2a0)
  800580:	09 34       	movi %o1,0x0
  800582:	02 98       	pfx %hi(0x40)
  800584:	09 6c       	movhi %o1,0x0
  800586:	d3 98       	pfx %hi(0x1a60)
  800588:	e1 35       	movi %g1,0xf
  80058a:	02 98       	pfx %hi(0x40)
  80058c:	01 6c       	movhi %g1,0x0
  80058e:	e1 7f       	call %g1
  800590:	0a 32       	mov %o2,%l0

	gC.timer->np_timercontrol = gC.timer->np_timercontrol | np_timercontrol_ito_mask;
  800592:	30 b0       	ldp %l0,[%l0,0x1]
  800594:	21 b0       	ldp %g1,[%l0,0x1]
  800596:	00 98       	pfx %hi(0x0)
  800598:	21 40       	or %g1,0x1
  80059a:	21 a0       	stp [%l0,0x1],%g1

	printf("\n\nTimer interrupt enabled.\n\n");
  80059c:	23 9a       	pfx %hi(0x4460)
  80059e:	88 36       	movi %o0,0x14
  8005a0:	04 98       	pfx %hi(0x80)
  8005a2:	08 6c       	movhi %o0,0x0
  8005a4:	d9 98       	pfx %hi(0x1b20)
  8005a6:	c1 37       	movi %g1,0x1e
  8005a8:	02 98       	pfx %hi(0x40)
  8005aa:	01 6c       	movhi %g1,0x0
  8005ac:	e1 7f       	call %g1
  8005ae:	00 30       	nop
	}
  8005b0:	df 7f       	ret
  8005b2:	a0 7d       	restore

008005b4 <DoDisableTimerInterrupt>:

void DoDisableTimerInterrupt(void)
	{
  8005b4:	17 78       	save %sp,0x17
	gC.timer = na_timer1;
  8005b6:	4e 9a       	pfx %hi(0x49c0)
  8005b8:	10 35       	movi %l0,0x8
  8005ba:	04 98       	pfx %hi(0x80)
  8005bc:	10 6c       	movhi %l0,0x0
  8005be:	49 98       	pfx %hi(0x920)
  8005c0:	01 34       	movi %g1,0x0
  8005c2:	04 98       	pfx %hi(0x80)
  8005c4:	01 6e       	movhi %g1,0x10
  8005c6:	21 a0       	stp [%l0,0x1],%g1
	nr_installuserisr(na_timer1_irq,0,0);
  8005c8:	28 36       	movi %o0,0x11
  8005ca:	09 34       	movi %o1,0x0
  8005cc:	d3 98       	pfx %hi(0x1a60)
  8005ce:	e1 35       	movi %g1,0xf
  8005d0:	02 98       	pfx %hi(0x40)
  8005d2:	01 6c       	movhi %g1,0x0
  8005d4:	e1 7f       	call %g1
  8005d6:	0a 34       	movi %o2,0x0

	gC.timer->np_timercontrol = gC.timer->np_timercontrol & ~np_timercontrol_ito_mask;
  8005d8:	30 b0       	ldp %l0,[%l0,0x1]
  8005da:	21 b0       	ldp %g1,[%l0,0x1]
  8005dc:	00 98       	pfx %hi(0x0)
  8005de:	21 3c       	andn %g1,0x1
  8005e0:	21 a0       	stp [%l0,0x1],%g1

	printf("\n\nTimer interrupt disabled.\n\n");
  8005e2:	24 9a       	pfx %hi(0x4480)
  8005e4:	88 36       	movi %o0,0x14
  8005e6:	04 98       	pfx %hi(0x80)
  8005e8:	08 6c       	movhi %o0,0x0
  8005ea:	d9 98       	pfx %hi(0x1b20)
  8005ec:	c1 37       	movi %g1,0x1e
  8005ee:	02 98       	pfx %hi(0x40)
  8005f0:	01 6c       	movhi %g1,0x0
  8005f2:	e1 7f       	call %g1
  8005f4:	00 30       	nop
	}
  8005f6:	df 7f       	ret
  8005f8:	a0 7d       	restore

008005fa <DoRapidPeripheralWrites>:
  8005fa:	17 78       	save %sp,0x17
  8005fc:	1a 80       	br 800632 <pastStringData00141>
  8005fe:	00 30       	nop

00800600 <stringData00141>:
  800600:	54 68       	ext16d %l4,%g2
  800602:	69 73       	usr0 %o1,%i3
  800604:	20 74       	ext8s %g0,0x1
  800606:	65 73       	usr0 %g5,%i3
  800608:	74 20       	lsr %l4,%g3
  80060a:	65 78       	save %sp,0x65
  80060c:	65 63       	sts8s [%sp,0x365],%r0
  80060e:	75 74       	ext8s %l5,0x3
  800610:	65 73       	usr0 %g5,%i3
  800612:	20 61       	sts8s [%sp,0x120],%r0
  800614:	20 76       	st8s [%g0],%r0,0x1
  800616:	65 72       	usr0 %g5,%l3
  800618:	79 20       	lsr %i1,%g3
  80061a:	73 65       	sts16s [%sp,0xb9],%r0
  80061c:	72 69       	ext16d %l2,%o3
  80061e:	65 73       	usr0 %g5,%i3
  800620:	20 6f       	movhi %g0,0x19
  800622:	66 20       	lsr %g6,%g3
  800624:	69 6e       	movhi %o1,0x13
  800626:	73 74       	ext8s %l3,0x3
  800628:	72 75       	*unknown*
  80062a:	63 74       	ext8s %g3,0x3
  80062c:	69 6f       	movhi %o1,0x1b
  80062e:	6e 73       	usr0 %sp,%i3
	...

00800632 <pastStringData00141>:
  800632:	30 98       	pfx %hi(0x600)
  800634:	08 34       	movi %o0,0x0
  800636:	04 98       	pfx %hi(0x80)
  800638:	08 6c       	movhi %o0,0x0
  80063a:	f6 98       	pfx %hi(0x1ec0)
  80063c:	87 37       	movi %g7,0x1c
  80063e:	02 98       	pfx %hi(0x40)
  800640:	07 6c       	movhi %g7,0x0
  800642:	e7 7f       	call %g7
  800644:	00 30       	nop
  800646:	f6 98       	pfx %hi(0x1ec0)
  800648:	87 35       	movi %g7,0xc
  80064a:	02 98       	pfx %hi(0x40)
  80064c:	07 6c       	movhi %g7,0x0
  80064e:	e7 7f       	call %g7
  800650:	00 30       	nop
  800652:	1a 80       	br 800688 <pastStringData00151>
  800654:	00 30       	nop

00800656 <stringData00151>:
  800656:	63 6f       	movhi %g3,0x1b
  800658:	6e 73       	usr0 %sp,%i3
  80065a:	69 73       	usr0 %o1,%i3
  80065c:	74 69       	ext16d %l4,%o3
  80065e:	6e 67       	sts16s [%sp,0x1b7],%r0
  800660:	20 6d       	movhi %g0,0x9
  800662:	61 6e       	movhi %g1,0x13
  800664:	79 20       	lsr %i1,%g3
  800666:	6d 61       	sts8s [%sp,0x16d],%r0
  800668:	6e 79       	trap 0x2e
  80066a:	20 74       	ext8s %g0,0x1
  80066c:	69 6e       	movhi %o1,0x13
  80066e:	79 20       	lsr %i1,%g3
  800670:	55 41       	or %l5,%o2
  800672:	52 54       	skp1 %l2,0x2
  800674:	20 74       	ext8s %g0,0x1
  800676:	72 61       	sts8s [%sp,0x172],%r0
  800678:	6e 73       	usr0 %sp,%i3
  80067a:	6d 69       	ext16d %o5,%o3

⌨️ 快捷键说明

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