📄 ioman.lst
字号:
00000018 E007 B L_30 ; T=0x0000002A
137: }
0000001A L_29:
138: ioman->usage[bufplace]=0x00;
0000001A 2200 MOV R2,#0x0
0000001C 1C08 MOV R0,R1 ; bufplace
0000001E 0401 LSL R1,R0,#0x10 ; bufplace
00000020 0C09 LSR R1,R1,#0x10
00000022 1C18 MOV R0,R3 ; ioman
00000024 1840 ADD R0,R1 ; ioman
00000026 30BE ADD R0,#0xBE
00000028 7002 STRB R2,[R0,#0x0]
139: }
0000002A L_30:
0000002A 4770 BX R14
0000002C ENDP ; 'ioman_resetUseCnt?T'
*** CODE SEGMENT '?PR?ioman_getRefCnt?T?ioman':
142: euint8 ioman_getRefCnt(IOManager *ioman,euint16 bufplace)
00000000 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000000 1C02 MOV R2,R0 ; ioman
00000002 ---- Variable 'ioman' assigned to Register 'R2' ----
144: if(bufplace>=ioman->numbuf){
00000002 1C10 MOV R0,R2 ; ioman
00000004 8900 LDRH R0,[R0,#0x8]
00000006 1C03 MOV R3,R0
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 18
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_31 ; T=0x0000001C
145: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000012 2305 MOV R3,#0x5
00000014 1C10 MOV R0,R2 ; ioman
00000016 7303 STRB R3,[R0,#0xC]
146: return(0x00);
00000018 2000 MOV R0,#0x0
0000001A E006 B L_32 ; T=0x0000002A
147: }
0000001C L_31:
148: return(ioman->reference[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 30C4 ADD R0,#0xC4
00000028 7800 LDRB R0,[R0,#0x0]
149: }
0000002A L_32:
0000002A 4770 BX R14
0000002C ENDP ; 'ioman_getRefCnt?T'
*** CODE SEGMENT '?PR?ioman_incRefCnt?T?ioman':
152: void ioman_incRefCnt(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' ----
154: 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_33 ; T=0x0000001E
155: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000016 2105 MOV R1,#0x5
00000018 1C18 MOV R0,R3 ; ioman
0000001A 7301 STRB R1,[R0,#0xC]
156: return;
0000001C E00B B L_34 ; T=0x00000036
157: }
0000001E L_33:
158: if(ioman->reference[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 30C4 ADD R0,#0xC4
0000002A 7801 LDRB R1,[R0,#0x0]
0000002C 1C0A MOV R2,R1
0000002E 2AFF CMP R2,#0xFF
00000030 D001 BEQ L_34 ; T=0x00000036
00000032 L_35:
159: else ioman->reference[bufplace]++;
00000032 3101 ADD R1,#0x1
00000034 7001 STRB R1,[R0,#0x0]
160: }
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 19
00000036 L_34:
00000036 BC10 POP {R4}
00000038 4770 BX R14
0000003A ENDP ; 'ioman_incRefCnt?T'
*** CODE SEGMENT '?PR?ioman_decRefCnt?T?ioman':
163: void ioman_decRefCnt(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' ----
165: 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_37 ; T=0x0000001E
166: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000016 2105 MOV R1,#0x5
00000018 1C18 MOV R0,R3 ; ioman
0000001A 7301 STRB R1,[R0,#0xC]
167: return;
0000001C E00B B L_38 ; T=0x00000036
168: }
0000001E L_37:
169: if(ioman->reference[bufplace]==0x00)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 30C4 ADD R0,#0xC4
0000002A 7801 LDRB R1,[R0,#0x0]
0000002C 1C0A MOV R2,R1
0000002E 2A00 CMP R2,#0x0
00000030 D001 BEQ L_38 ; T=0x00000036
00000032 L_39:
170: else ioman->reference[bufplace]--;
00000032 3901 SUB R1,#0x1
00000034 7001 STRB R1,[R0,#0x0]
171: }
00000036 L_38:
00000036 BC10 POP {R4}
00000038 4770 BX R14
0000003A ENDP ; 'ioman_decRefCnt?T'
*** CODE SEGMENT '?PR?ioman_resetRefCnt?T?ioman':
174: void ioman_resetRefCnt(IOManager *ioman,euint16 bufplace)
00000000 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000000 1C03 MOV R3,R0 ; ioman
00000002 ---- Variable 'ioman' assigned to Register 'R3' ----
176: 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_41 ; T=0x0000001A
177: ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
00000012 2205 MOV R2,#0x5
00000014 1C18 MOV R0,R3 ; ioman
00000016 7302 STRB R2,[R0,#0xC]
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 20
178: return;
00000018 E007 B L_42 ; T=0x0000002A
179: }
0000001A L_41:
180: ioman->reference[bufplace]=0x00;
0000001A 2200 MOV R2,#0x0
0000001C 1C08 MOV R0,R1 ; bufplace
0000001E 0401 LSL R1,R0,#0x10 ; bufplace
00000020 0C09 LSR R1,R1,#0x10
00000022 1C18 MOV R0,R3 ; ioman
00000024 1840 ADD R0,R1 ; ioman
00000026 30C4 ADD R0,#0xC4
00000028 7002 STRB R2,[R0,#0x0]
181: }
0000002A L_42:
0000002A 4770 BX R14
0000002C ENDP ; 'ioman_resetRefCnt?T'
*** CODE SEGMENT '?PR?ioman_pop?T?ioman':
184: esint8 ioman_pop(IOManager *ioman,euint16 bufplace)
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'bufplace' assigned to Register 'R1' ----
00000002 1C02 MOV R2,R0 ; ioman
00000004 ---- Variable 'ioman' assigned to Register 'R2' ----
186: if(bufplace>=ioman->numbuf){
00000004 1C10 MOV R0,R2 ; ioman
00000006 8900 LDRH R0,[R0,#0x8]
00000008 1C03 MOV R3,R0
0000000A 1C08 MOV R0,R1 ; bufplace
0000000C 0400 LSL R0,R0,#0x10 ; bufplace
0000000E 0C00 LSR R0,R0,#0x10
00000010 4298 CMP R0,R3
00000012 D304 BCC L_43 ; T=0x0000001E
187: ioman_setError(ioman,IOMAN_ERR_POPEMPTYSTACK);
00000014 2307 MOV R3,#0x7
00000016 1C10 MOV R0,R2 ; ioman
00000018 7303 STRB R3,[R0,#0xC]
188: return(-1);
0000001A 4800 LDR R0,=0xFFFFFFFF
0000001C E053 B L_44 ; T=0x000000C6
189: }
0000001E L_43:
190: if(ioman->itptr[bufplace]==0 || ioman->itptr[bufplace]>IOMAN_NUMITERATIONS)return(-1);
0000001E 1C08 MOV R0,R1 ; bufplace
00000020 0403 LSL R3,R0,#0x10 ; bufplace
00000022 0C1B LSR R3,R3,#0x10
00000024 1C10 MOV R0,R2 ; ioman
00000026 18C0 ADD R0,R3 ; ioman
00000028 30CA ADD R0,#0xCA
0000002A 7800 LDRB R0,[R0,#0x0]
0000002C 1C03 MOV R3,R0
0000002E 2B00 CMP R3,#0x0
00000030 D001 BEQ L_46 ; T=0x00000036
00000032 2B03 CMP R3,#0x3
00000034 DD01 BLE L_45 ; T=0x0000003A
00000036 L_46:
00000036 4800 LDR R0,=0xFFFFFFFF
00000038 E045 B L_44 ; T=0x000000C6
0000003A L_45:
191: ioman->sector[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].sector;
0000003A 00DB LSL R3,R3,#0x3
0000003C 1C08 MOV R0,R1 ; bufplace
0000003E 0400 LSL R0,R0,#0x10 ; bufplace
00000040 0C00 LSR R0,R0,#0x10
00000042 2418 MOV R4,#0x18
00000044 4360 MUL R0,R4
00000046 181B ADD R3,R0
ARM COMPILER V2.42, ioman 27/03/06 10:45:50 PAGE 21
00000048 1C10 MOV R0,R2 ; ioman
0000004A 18C0 ADD R0,R3 ; ioman
0000004C 6903 LDR R3,[R0,#0x10]
0000004E 1C08 MOV R0,R1 ; bufplace
00000050 0404 LSL R4,R0,#0x10 ; bufplace
00000052 0C24 LSR R4,R4,#0x10
00000054 00A4 LSL R4,R4,#0x2
00000056 1C10 MOV R0,R2 ; ioman
00000058 1900 ADD R0,R4 ; ioman
0000005A 30A0 ADD R0,#0xA0
0000005C 6003 STR R3,[R0,#0x0]
192: ioman->status[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].status;
0000005E 1C08 MOV R0,R1 ; bufplace
00000060 0403 LSL R3,R0,#0x10 ; bufplace
00000062 0C1B LSR R3,R3,#0x10
00000064 1C10 MOV R0,R2 ; ioman
00000066 18C0 ADD R0,R3 ; ioman
00000068 1C03 MOV R3,R0
0000006A 33CA ADD R3,#0xCA
0000006C 781B LDRB R3,[R3,#0x0]
0000006E 1C1C MOV R4,R3
00000070 00E4 LSL R4,R4,#0x3
00000072 1C0B MOV R3,R1 ; bufplace
00000074 041B LSL R3,R3,#0x10 ; bufplace
00000076 0C1B LSR R3,R3,#0x10
00000078 2518 MOV R5,#0x18
0000007A 436B MUL R3,R5
0000007C 18E4 ADD R4,R3
0000007E 1C13 MOV R3,R2 ; ioman
00000080 191B ADD R3,R4 ; ioman
00000082 7D1B LDRB R3,[R3,#0x14]
00000084 30B8 ADD R0,#0xB8
00000086 7003 STRB R3,[R0,#0x0]
193: ioman->usage[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].usage;
00000088 1C08 MOV R0,R1 ; bufplace
0000008A 0403 LSL R3,R0,#0x10 ; bufplace
0000008C 0C1B LSR R3,R3,#0x10
0000008E 1C10 MOV R0,R2 ; ioman
00000090 18C0 ADD R0,R3 ; ioman
00000092 1C03 MOV R3,R0
00000094 33CA ADD R3,#0xCA
00000096 781B LDRB R3,[R3,#0x0]
00000098 1C1C MOV R4,R3
0000009A 00E4 LSL R4,R4,#0x3
0000009C 1C0B MOV R3,R1 ; bufpl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -