📄 ioman.lst
字号:
*** CODE SEGMENT '?PR?ioman_getBuffer?T?ioman':
63: euint8* ioman_getBuffer(IOManager *ioman,euint8* bufferarea)
00000000 1C01 MOV R1,R0 ; ioman
00000002 ---- Variable 'ioman' assigned to Register 'R1' ----
66: return(ioman->cache_mem);
00000002 1C08 MOV R0,R1 ; ioman
00000004 30D0 ADD R0,#0xD0
70: }
00000006 4770 BX R14
00000008 ENDP ; 'ioman_getBuffer?T'
*** CODE SEGMENT '?PR?ioman_setAttr?T?ioman':
73: void ioman_setAttr(IOManager *ioman,euint16 bufplace,euint8 attribute,euint8 val)
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'val' assigned to Register 'R3' ----
00000002 ---- Variable 'attribute' assigned to Register 'R2' ----
00000002 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000002 1C04 MOV R4,R0 ; ioman
00000004 ---- Variable 'ioman' assigned to Register 'R4' ----
75: if(bufplace>=ioman->numbuf){
00000004 1C20 MOV R0,R4 ; ioman
00000006 8900 LDRH R0,[R0,#0x8]
00000008 1C05 MOV R5,R0
0000000A 1C08 MOV R0,R1 ; bufplace
0000000C 0400 LSL R0,R0,#0x10 ; bufplace
0000000E 0C00 LSR R0,R0,#0x10
00000010 42A8 CMP R0,R5
00000012 D303 BCC L_13 ; T=0x0000001C
76: ioman_setError(ioman,IOMAN_ERR_SETATTROUTOFBOUNDS);
00000014 2501 MOV R5,#0x1
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 14
00000016 1C20 MOV R0,R4 ; ioman
00000018 7305 STRB R5,[R0,#0xC]
77: return; /* Out of bounds */
0000001A E024 B L_14 ; T=0x00000066
78: }
0000001C L_13:
80: if(val){
0000001C 1C18 MOV R0,R3 ; val
0000001E 2800 CMP R0,#0x0 ; val
00000020 D010 BEQ L_15 ; T=0x00000044
81: ioman->status[bufplace]|=1<<attribute;
00000022 1C10 MOV R0,R2 ; attribute
00000024 0600 LSL R0,R0,#0x18 ; attribute
00000026 0E00 LSR R0,R0,#0x18
00000028 2501 MOV R5,#0x1
0000002A 4085 LSL R5,R0
0000002C 062D LSL R5,R5,#0x18
0000002E 0E2D LSR R5,R5,#0x18
00000030 1C08 MOV R0,R1 ; bufplace
00000032 0403 LSL R3,R0,#0x10 ; bufplace
00000034 0C1B LSR R3,R3,#0x10
00000036 1C20 MOV R0,R4 ; ioman
00000038 18C0 ADD R0,R3 ; ioman
0000003A 30B8 ADD R0,#0xB8
0000003C 7803 LDRB R3,[R0,#0x0]
0000003E 432B ORR R3,R5
00000040 7003 STRB R3,[R0,#0x0]
82: }else{
00000042 E010 B L_14 ; T=0x00000066
00000044 L_15:
83: ioman->status[bufplace]&=~(1<<attribute);
00000044 1C10 MOV R0,R2 ; attribute
00000046 0600 LSL R0,R0,#0x18 ; attribute
00000048 0E00 LSR R0,R0,#0x18
0000004A 2201 MOV R2,#0x1
0000004C 4082 LSL R2,R0
0000004E 43D2 MVN R2,R2
00000050 0612 LSL R2,R2,#0x18
00000052 0E12 LSR R2,R2,#0x18
00000054 1C08 MOV R0,R1 ; bufplace
00000056 0401 LSL R1,R0,#0x10 ; bufplace
00000058 0C09 LSR R1,R1,#0x10
0000005A 1C20 MOV R0,R4 ; ioman
0000005C 1840 ADD R0,R1 ; ioman
0000005E 30B8 ADD R0,#0xB8
00000060 7801 LDRB R1,[R0,#0x0]
00000062 4011 AND R1,R2
00000064 7001 STRB R1,[R0,#0x0]
85: }
00000066 L_14:
00000066 BC30 POP {R4-R5}
00000068 4770 BX R14
0000006A ENDP ; 'ioman_setAttr?T'
*** CODE SEGMENT '?PR?ioman_getAttr?T?ioman':
88: euint8 ioman_getAttr(IOManager *ioman,euint16 bufplace,euint8 attribute)
00000000 B410 PUSH {R4}
00000002 ---- Variable 'attribute' assigned to Register 'R2' ----
00000002 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000002 1C03 MOV R3,R0 ; ioman
00000004 ---- Variable 'ioman' assigned to Register 'R3' ----
90: if(bufplace>=ioman->numbuf){
00000004 1C18 MOV R0,R3 ; ioman
00000006 8900 LDRH R0,[R0,#0x8]
00000008 1C04 MOV R4,R0
0000000A 1C08 MOV R0,R1 ; bufplace
0000000C 0400 LSL R0,R0,#0x10 ; bufplace
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 15
0000000E 0C00 LSR R0,R0,#0x10
00000010 42A0 CMP R0,R4
00000012 D304 BCC L_17 ; T=0x0000001E
91: ioman_setError(ioman,IOMAN_ERR_GETATTROUTOFBOUNDS);
00000014 2402 MOV R4,#0x2
00000016 1C18 MOV R0,R3 ; ioman
00000018 7304 STRB R4,[R0,#0xC]
92: return(0xFF); /* Out of bounds */
0000001A 20FF MOV R0,#0xFF
0000001C E00C B L_18 ; T=0x00000038
93: }
0000001E L_17:
95: return(ioman->status[bufplace]&(1<<attribute));
0000001E 1C08 MOV R0,R1 ; bufplace
00000020 0401 LSL R1,R0,#0x10 ; bufplace
00000022 0C09 LSR R1,R1,#0x10
00000024 1C18 MOV R0,R3 ; ioman
00000026 1840 ADD R0,R1 ; ioman
00000028 30B8 ADD R0,#0xB8
0000002A 7800 LDRB R0,[R0,#0x0]
0000002C 1C11 MOV R1,R2 ; attribute
0000002E 060A LSL R2,R1,#0x18 ; attribute
00000030 0E12 LSR R2,R2,#0x18
00000032 2101 MOV R1,#0x1
00000034 4091 LSL R1,R2
00000036 4008 AND R0,R1
96: }
00000038 L_18:
00000038 BC10 POP {R4}
0000003A 4770 BX R14
0000003C ENDP ; 'ioman_getAttr?T'
*** CODE SEGMENT '?PR?ioman_getUseCnt?T?ioman':
99: euint8 ioman_getUseCnt(IOManager *ioman,euint16 bufplace)
00000000 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000000 1C02 MOV R2,R0 ; ioman
00000002 ---- Variable 'ioman' assigned to Register 'R2' ----
101: if(bufplace>=ioman->numbuf){
00000002 1C10 MOV R0,R2 ; ioman
00000004 8900 LDRH R0,[R0,#0x8]
00000006 1C03 MOV R3,R0
00000008 1C08 MOV R0,R1 ; bufplace
0000000A 0400 LSL R0,R0,#0x10 ; bufplace
0000000C 0C00 LSR R0,R0,#0x10
0000000E 4298 CMP R0,R3
00000010 D304 BCC L_19 ; T=0x0000001C
102: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000012 2305 MOV R3,#0x5
00000014 1C10 MOV R0,R2 ; ioman
00000016 7303 STRB R3,[R0,#0xC]
103: return(0x00);
00000018 2000 MOV R0,#0x0
0000001A E006 B L_20 ; T=0x0000002A
104: }
0000001C L_19:
105: return(ioman->usage[bufplace]);
0000001C 1C08 MOV R0,R1 ; bufplace
0000001E 0401 LSL R1,R0,#0x10 ; bufplace
00000020 0C09 LSR R1,R1,#0x10
00000022 1C10 MOV R0,R2 ; ioman
00000024 1840 ADD R0,R1 ; ioman
00000026 30BE ADD R0,#0xBE
00000028 7800 LDRB R0,[R0,#0x0]
106: }
0000002A L_20:
0000002A 4770 BX R14
0000002C ENDP ; 'ioman_getUseCnt?T'
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 16
*** CODE SEGMENT '?PR?ioman_incUseCnt?T?ioman':
110: void ioman_incUseCnt(IOManager *ioman,euint16 bufplace)
00000000 B410 PUSH {R4}
00000002 1C0C MOV R4,R1 ; bufplace
00000004 ---- Variable 'bufplace' assigned to Register 'R4' ----
00000004 1C03 MOV R3,R0 ; ioman
00000006 ---- Variable 'ioman' assigned to Register 'R3' ----
112: if(bufplace>=ioman->numbuf){
00000006 1C18 MOV R0,R3 ; ioman
00000008 8900 LDRH R0,[R0,#0x8]
0000000A 1C02 MOV R2,R0
0000000C 1C20 MOV R0,R4 ; bufplace
0000000E 0400 LSL R0,R0,#0x10 ; bufplace
00000010 0C00 LSR R0,R0,#0x10
00000012 4290 CMP R0,R2
00000014 D303 BCC L_21 ; T=0x0000001E
113: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000016 2105 MOV R1,#0x5
00000018 1C18 MOV R0,R3 ; ioman
0000001A 7301 STRB R1,[R0,#0xC]
114: return;
0000001C E00B B L_22 ; T=0x00000036
115: }
0000001E L_21:
116: if(ioman->usage[bufplace]==0xFF)return;
0000001E 1C20 MOV R0,R4 ; bufplace
00000020 0401 LSL R1,R0,#0x10 ; bufplace
00000022 0C09 LSR R1,R1,#0x10
00000024 1C18 MOV R0,R3 ; ioman
00000026 1840 ADD R0,R1 ; ioman
00000028 30BE ADD R0,#0xBE
0000002A 7801 LDRB R1,[R0,#0x0]
0000002C 1C0A MOV R2,R1
0000002E 2AFF CMP R2,#0xFF
00000030 D001 BEQ L_22 ; T=0x00000036
00000032 L_23:
117: else ioman->usage[bufplace]++;
00000032 3101 ADD R1,#0x1
00000034 7001 STRB R1,[R0,#0x0]
118: }
00000036 L_22:
00000036 BC10 POP {R4}
00000038 4770 BX R14
0000003A ENDP ; 'ioman_incUseCnt?T'
*** CODE SEGMENT '?PR?ioman_decUseCnt?T?ioman':
121: void ioman_decUseCnt(IOManager *ioman,euint16 bufplace)
00000000 B410 PUSH {R4}
00000002 1C0C MOV R4,R1 ; bufplace
00000004 ---- Variable 'bufplace' assigned to Register 'R4' ----
00000004 1C03 MOV R3,R0 ; ioman
00000006 ---- Variable 'ioman' assigned to Register 'R3' ----
123: if(bufplace>=ioman->numbuf){
00000006 1C18 MOV R0,R3 ; ioman
00000008 8900 LDRH R0,[R0,#0x8]
0000000A 1C02 MOV R2,R0
0000000C 1C20 MOV R0,R4 ; bufplace
0000000E 0400 LSL R0,R0,#0x10 ; bufplace
00000010 0C00 LSR R0,R0,#0x10
00000012 4290 CMP R0,R2
00000014 D303 BCC L_25 ; T=0x0000001E
124: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000016 2105 MOV R1,#0x5
00000018 1C18 MOV R0,R3 ; ioman
0000001A 7301 STRB R1,[R0,#0xC]
125: return;
0000001C E00B B L_26 ; T=0x00000036
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 17
126: }
0000001E L_25:
127: if(ioman->usage[bufplace]==0x0)return;
0000001E 1C20 MOV R0,R4 ; bufplace
00000020 0401 LSL R1,R0,#0x10 ; bufplace
00000022 0C09 LSR R1,R1,#0x10
00000024 1C18 MOV R0,R3 ; ioman
00000026 1840 ADD R0,R1 ; ioman
00000028 30BE ADD R0,#0xBE
0000002A 7801 LDRB R1,[R0,#0x0]
0000002C 1C0A MOV R2,R1
0000002E 2A00 CMP R2,#0x0
00000030 D001 BEQ L_26 ; T=0x00000036
00000032 L_27:
128: else ioman->usage[bufplace]--;
00000032 3901 SUB R1,#0x1
00000034 7001 STRB R1,[R0,#0x0]
129: }
00000036 L_26:
00000036 BC10 POP {R4}
00000038 4770 BX R14
0000003A ENDP ; 'ioman_decUseCnt?T'
*** CODE SEGMENT '?PR?ioman_resetUseCnt?T?ioman':
132: void ioman_resetUseCnt(IOManager *ioman,euint16 bufplace)
00000000 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000000 1C03 MOV R3,R0 ; ioman
00000002 ---- Variable 'ioman' assigned to Register 'R3' ----
134: if(bufplace>=ioman->numbuf){
00000002 1C18 MOV R0,R3 ; ioman
00000004 8900 LDRH R0,[R0,#0x8]
00000006 1C02 MOV R2,R0
00000008 1C08 MOV R0,R1 ; bufplace
0000000A 0400 LSL R0,R0,#0x10 ; bufplace
0000000C 0C00 LSR R0,R0,#0x10
0000000E 4290 CMP R0,R2
00000010 D303 BCC L_29 ; T=0x0000001A
135: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000012 2205 MOV R2,#0x5
00000014 1C18 MOV R0,R3 ; ioman
00000016 7302 STRB R2,[R0,#0xC]
136: return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -