📄 peripheral_test.objdump
字号:
peripheral_test.out: file format elf32-nios
Disassembly of section .text:
00800000 <nr_jumptostart>:
800000: da 98 pfx %hi(0x1b40)
800002: c0 37 movi %g0,0x1e
800004: 02 98 pfx %hi(0x40)
800006: 00 6c movhi %g0,0x0
800008: c0 7f jmp %g0
80000a: 00 30 nop
80000c: 4e 69 ext16d %sp,%o2
80000e: 6f 73 usr0 %o7,%i3
00800010 <DoUARTMenu>:
#include "excalibur.h"
void DoUARTMenu(void)
{
800010: 17 78 save %sp,0x17
char c;
menu:
MenuBegin("UART Menu");
800012: 0a 9a pfx %hi(0x4140)
800014: 08 37 movi %o0,0x18
800016: 04 98 pfx %hi(0x80)
800018: 08 6c movhi %o0,0x0
80001a: b9 98 pfx %hi(0x1720)
80001c: 01 36 movi %g1,0x10
80001e: 02 98 pfx %hi(0x40)
800020: 01 6c movhi %g1,0x0
800022: e1 7f call %g1
800024: 00 30 nop
MenuEntry('a',"Send Lots");
800026: 03 98 pfx %hi(0x60)
800028: 33 34 movi %l3,0x1
80002a: 0b 9a pfx %hi(0x4160)
80002c: 89 34 movi %o1,0x4
80002e: 04 98 pfx %hi(0x80)
800030: 09 6c movhi %o1,0x0
800032: ba 98 pfx %hi(0x1740)
800034: 30 36 movi %l0,0x11
800036: 02 98 pfx %hi(0x40)
800038: 10 6c movhi %l0,0x0
80003a: f0 7f call %l0
80003c: 68 32 mov %o0,%l3
MenuEntry('b',"Receive Chars");
80003e: 03 98 pfx %hi(0x60)
800040: 52 34 movi %l2,0x2
800042: 0b 9a pfx %hi(0x4160)
800044: 09 36 movi %o1,0x10
800046: 04 98 pfx %hi(0x80)
800048: 09 6c movhi %o1,0x0
80004a: f0 7f call %l0
80004c: 48 32 mov %o0,%l2
MenuEntry('c',"Enable Interrupt Handler");
80004e: 03 98 pfx %hi(0x60)
800050: 74 34 movi %l4,0x3
800052: 0c 9a pfx %hi(0x4180)
800054: 09 34 movi %o1,0x0
800056: 04 98 pfx %hi(0x80)
800058: 09 6c movhi %o1,0x0
80005a: f0 7f call %l0
80005c: 88 32 mov %o0,%l4
MenuEntry('d',"Disable Interrupt Handler");
80005e: 03 98 pfx %hi(0x60)
800060: 91 34 movi %l1,0x4
800062: 0c 9a pfx %hi(0x4180)
800064: 89 37 movi %o1,0x1c
800066: 04 98 pfx %hi(0x80)
800068: 09 6c movhi %o1,0x0
80006a: f0 7f call %l0
80006c: 28 32 mov %o0,%l1
c = MenuEnd('a','d');
80006e: 68 32 mov %o0,%l3
800070: bb 98 pfx %hi(0x1760)
800072: 21 34 movi %g1,0x1
800074: 02 98 pfx %hi(0x40)
800076: 01 6c movhi %g1,0x0
800078: e1 7f call %g1
80007a: 29 32 mov %o1,%l1
switch(c)
80007c: 68 7c sext8 %o0
80007e: 10 31 mov %l0,%o0
800080: 50 12 cmp %l0,%l2
800082: e3 7e skps cc_ne
800084: 1d 80 br 8000c0 <DoUARTMenu+0xb0>
800086: 00 30 nop
800088: 50 12 cmp %l0,%l2
80008a: e8 7e skps cc_le
80008c: 07 80 br 80009c <DoUARTMenu+0x8c>
80008e: 00 30 nop
800090: 70 12 cmp %l0,%l3
800092: e3 7e skps cc_ne
800094: 0d 80 br 8000b0 <DoUARTMenu+0xa0>
800096: 00 30 nop
800098: 29 80 br 8000ec <DoUARTMenu+0xdc>
80009a: 00 30 nop
80009c: 90 12 cmp %l0,%l4
80009e: e3 7e skps cc_ne
8000a0: 17 80 br 8000d0 <DoUARTMenu+0xc0>
8000a2: 00 30 nop
8000a4: 30 12 cmp %l0,%l1
8000a6: e3 7e skps cc_ne
8000a8: 1b 80 br 8000e0 <DoUARTMenu+0xd0>
8000aa: 00 30 nop
8000ac: 1f 80 br 8000ec <DoUARTMenu+0xdc>
8000ae: 00 30 nop
{
MenuCase('a',DoUARTSendLots);
8000b0: 03 98 pfx %hi(0x60)
8000b2: a1 37 movi %g1,0x1d
8000b4: 02 98 pfx %hi(0x40)
8000b6: 01 6c movhi %g1,0x0
8000b8: e1 7f call %g1
8000ba: 00 30 nop
8000bc: 17 80 br 8000ec <DoUARTMenu+0xdc>
8000be: 00 30 nop
MenuCase('b',DoUARTReceiveChars);
8000c0: 07 98 pfx %hi(0xe0)
8000c2: 61 35 movi %g1,0xb
8000c4: 02 98 pfx %hi(0x40)
8000c6: 01 6c movhi %g1,0x0
8000c8: e1 7f call %g1
8000ca: 00 30 nop
8000cc: 0f 80 br 8000ec <DoUARTMenu+0xdc>
8000ce: 00 30 nop
MenuCase('c',DoUARTEnableInterruptHandler);
8000d0: 09 98 pfx %hi(0x120)
8000d2: c1 36 movi %g1,0x16
8000d4: 02 98 pfx %hi(0x40)
8000d6: 01 6c movhi %g1,0x0
8000d8: e1 7f call %g1
8000da: 00 30 nop
8000dc: 07 80 br 8000ec <DoUARTMenu+0xdc>
8000de: 00 30 nop
MenuCase('d',DoUARTDisableInterruptHandler);
8000e0: 0b 98 pfx %hi(0x160)
8000e2: e1 36 movi %g1,0x17
8000e4: 02 98 pfx %hi(0x40)
8000e6: 01 6c movhi %g1,0x0
8000e8: e1 7f call %g1
8000ea: 00 30 nop
}
if(c != 'q')
8000ec: 03 98 pfx %hi(0x60)
8000ee: 30 16 cmpi %l0,0x11
8000f0: e2 7e skps cc_eq
8000f2: 8f 87 br 800012 <DoUARTMenu+0x2>
8000f4: 00 30 nop
goto menu;
}
8000f6: df 7f ret
8000f8: a0 7d restore
008000fa <DoUARTSendLots>:
#define kLineWidth 77
#define kLineCount 100
void DoUARTSendLots(void)
{
8000fa: 17 78 save %sp,0x17
char c;
int i,j;
int mix;
printf("\n\nPress character, or <space> for mix: ");
8000fc: 0d 9a pfx %hi(0x41a0)
8000fe: 08 37 movi %o0,0x18
800100: 04 98 pfx %hi(0x80)
800102: 08 6c movhi %o0,0x0
800104: d9 98 pfx %hi(0x1b20)
800106: c1 37 movi %g1,0x1e
800108: 02 98 pfx %hi(0x40)
80010a: 01 6c movhi %g1,0x0
80010c: e1 7f call %g1
80010e: 00 30 nop
while((c = rGetChar()) < 0)
800110: 0c 98 pfx %hi(0x180)
800112: 52 36 movi %l2,0x12
800114: 02 98 pfx %hi(0x40)
800116: 12 6c movhi %l2,0x0
800118: f2 7f call %l2
80011a: 00 30 nop
80011c: 11 31 mov %l1,%o0
80011e: 11 74 ext8s %l1,0x0
800120: 21 32 mov %g1,%l1
800122: 01 74 ext8s %g1,0x0
800124: 61 7c sext8 %g1
800126: 30 30 mov %l0,%g1
800128: 10 14 cmpi %l0,0x0
80012a: e6 7e skps cc_ge
80012c: f5 87 br 800118 <DoUARTSendLots+0x1e>
80012e: 00 30 nop
;
printf("%c\n\n",c);
800130: 0f 9a pfx %hi(0x41e0)
800132: 08 34 movi %o0,0x0
800134: 04 98 pfx %hi(0x80)
800136: 08 6c movhi %o0,0x0
800138: d9 98 pfx %hi(0x1b20)
80013a: c1 37 movi %g1,0x1e
80013c: 02 98 pfx %hi(0x40)
80013e: 01 6c movhi %g1,0x0
800140: e1 7f call %g1
800142: 09 32 mov %o1,%l0
// Don't spew unprintables!
if(c < 32)
800144: f0 17 cmpi %l0,0x1f
800146: e8 7e skps cc_le
800148: 08 80 br 80015a <DoUARTSendLots+0x60>
80014a: 12 32 mov %l2,%l0
c = '.';
80014c: 01 98 pfx %hi(0x20)
80014e: d1 35 movi %l1,0xe
800150: 21 32 mov %g1,%l1
800152: 01 74 ext8s %g1,0x0
800154: 61 7c sext8 %g1
800156: 30 30 mov %l0,%g1
mix = c==' ';
800158: 12 32 mov %l2,%l0
80015a: 01 98 pfx %hi(0x20)
80015c: 12 44 xor %l2,0x0
80015e: 52 7c abs %l2
800160: 32 0c dec %l2
800162: f2 27 lsri %l2,0x1f
for(i = 0; i < kLineCount; i++)
800164: 14 34 movi %l4,0x0
800166: f5 98 pfx %hi(0x1ea0)
800168: 95 37 movi %l5,0x1c
80016a: 02 98 pfx %hi(0x40)
80016c: 15 6c movhi %l5,0x0
80016e: f6 98 pfx %hi(0x1ec0)
800170: 96 35 movi %l6,0xc
800172: 02 98 pfx %hi(0x40)
800174: 16 6c movhi %l6,0x0
{
for(j = 0; j < kLineWidth; j++)
800176: 02 98 pfx %hi(0x40)
800178: 93 35 movi %l3,0xc
{
if(mix)
80017a: 52 7f skprnz %l2
80017c: 12 80 br 8001a2 <DoUARTSendLots+0xa8>
80017e: 08 32 mov %o0,%l0
{
c++;
800180: 31 04 inc %l1
if(c >= 127)
800182: 21 32 mov %g1,%l1
800184: 01 74 ext8s %g1,0x0
800186: 61 7c sext8 %g1
800188: 30 30 mov %l0,%g1
80018a: 03 98 pfx %hi(0x60)
80018c: d0 17 cmpi %l0,0x1e
80018e: e9 7e skps cc_gt
800190: 08 80 br 8001a2 <DoUARTSendLots+0xa8>
800192: 08 32 mov %o0,%l0
c = 33;
800194: 01 98 pfx %hi(0x20)
800196: 31 34 movi %l1,0x1
800198: 21 32 mov %g1,%l1
80019a: 01 74 ext8s %g1,0x0
80019c: 61 7c sext8 %g1
80019e: 30 30 mov %l0,%g1
}
nr_uart_txchar(c,0);
8001a0: 08 32 mov %o0,%l0
8001a2: f5 7f call %l5
8001a4: 09 34 movi %o1,0x0
8001a6: 33 0c dec %l3
8001a8: 13 14 cmpi %l3,0x0
8001aa: e7 7e skps cc_lt
8001ac: e6 87 br 80017a <DoUARTSendLots+0x80>
8001ae: 00 30 nop
}
nr_uart_txcr();
8001b0: f6 7f call %l6
8001b2: 34 04 inc %l4
8001b4: 03 98 pfx %hi(0x60)
8001b6: 74 14 cmpi %l4,0x3
8001b8: e9 7e skps cc_gt
8001ba: dd 87 br 800176 <DoUARTSendLots+0x7c>
8001bc: 00 30 nop
}
printf("\n\n");
8001be: 0f 9a pfx %hi(0x41e0)
8001c0: 08 35 movi %o0,0x8
8001c2: 04 98 pfx %hi(0x80)
8001c4: 08 6c movhi %o0,0x0
8001c6: d9 98 pfx %hi(0x1b20)
8001c8: c1 37 movi %g1,0x1e
8001ca: 02 98 pfx %hi(0x40)
8001cc: 01 6c movhi %g1,0x0
8001ce: e1 7f call %g1
8001d0: 00 30 nop
}
8001d2: df 7f ret
8001d4: a0 7d restore
008001d6 <DoUARTReceiveChars>:
void DoUARTReceiveChars(void)
{
8001d6: 17 78 save %sp,0x17
int escCount = 0;
char c;
char cP;
printf("\n\nEnter characters; five <Esc>'s to finish.\n\n");
8001d8: 0f 9a pfx %hi(0x41e0)
8001da: 88 35 movi %o0,0xc
8001dc: 04 98 pfx %hi(0x80)
8001de: 08 6c movhi %o0,0x0
8001e0: d9 98 pfx %hi(0x1b20)
8001e2: d0 37 movi %l0,0x1e
8001e4: 02 98 pfx %hi(0x40)
8001e6: 10 6c movhi %l0,0x0
8001e8: f0 7f call %l0
8001ea: 11 34 movi %l1,0x0
while(escCount < 5)
8001ec: 0c 98 pfx %hi(0x180)
8001ee: 52 36 movi %l2,0x12
8001f0: 02 98 pfx %hi(0x40)
8001f2: 12 6c movhi %l2,0x0
{
while(( c = rGetChar() ) < 0)
8001f4: f2 7f call %l2
8001f6: 00 30 nop
8001f8: 0a 31 mov %o2,%o0
8001fa: 0a 74 ext8s %o2,0x0
8001fc: 6a 7c sext8 %o2
8001fe: 0a 14 cmpi %o2,0x0
800200: e6 7e skps cc_ge
800202: f8 87 br 8001f4 <DoUARTReceiveChars+0x1e>
800204: 00 30 nop
;
if(c == 27)
800206: 6a 17 cmpi %o2,0x1b
800208: e3 7e skps cc_ne
80020a: 02 80 br 800210 <DoUARTReceiveChars+0x3a>
80020c: 31 04 inc %l1
escCount++;
else
escCount = 0;
80020e: 11 34 movi %l1,0x0
cP = c >= 32 ? c : '.';
800210: 01 98 pfx %hi(0x20)
800212: c9 35 movi %o1,0xe
800214: ea 17 cmpi %o2,0x1f
800216: e9 7e skps cc_gt
800218: 03 80 br 800220 <DoUARTReceiveChars+0x4a>
80021a: 00 30 nop
80021c: 09 31 mov %o1,%o0
80021e: 09 74 ext8s %o1,0x0
printf("\'%c\' 0x%02x %d\n",cP,c,c);
800220: 10 9a pfx %hi(0x4200)
800222: 88 37 movi %o0,0x1c
800224: 04 98 pfx %hi(0x80)
800226: 08 6c movhi %o0,0x0
800228: 69 7c sext8 %o1
80022a: f0 7f call %l0
80022c: 4b 31 mov %o3,%o2
}
80022e: 91 14 cmpi %l1,0x4
800230: e9 7e skps cc_gt
800232: e0 87 br 8001f4 <DoUARTReceiveChars+0x1e>
800234: 00 30 nop
}
800236: df 7f ret
800238: a0 7d restore
0080023a <MyUARTISR>:
typedef struct
{
np_uart *uart;
char rxChar;
} UARTISRContext;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -