mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
268 lines
18 KiB
Plaintext
268 lines
18 KiB
Plaintext
1 ;--------------------------------------------------------
|
|
2 ; File Created by SDCC : free open source ANSI-C Compiler
|
|
3 ; Version 4.2.0 #13081 (Linux)
|
|
4 ;--------------------------------------------------------
|
|
5 .module hello_world
|
|
6 .optsdcc -mmcs51 --model-small
|
|
7
|
|
8 ;--------------------------------------------------------
|
|
9 ; Public variables in this module
|
|
10 ;--------------------------------------------------------
|
|
11 .globl _uip_listen
|
|
12 .globl _psock_readto
|
|
13 .globl _psock_init
|
|
14 .globl _strtox
|
|
15 .globl _write_char
|
|
16 .globl _hello_world_init
|
|
17 .globl _hello_world_appcall
|
|
18 ;--------------------------------------------------------
|
|
19 ; special function registers
|
|
20 ;--------------------------------------------------------
|
|
21 .area RSEG (ABS,DATA)
|
|
000000 22 .org 0x0000
|
|
23 ;--------------------------------------------------------
|
|
24 ; special function bits
|
|
25 ;--------------------------------------------------------
|
|
26 .area RSEG (ABS,DATA)
|
|
000000 27 .org 0x0000
|
|
28 ;--------------------------------------------------------
|
|
29 ; overlayable register banks
|
|
30 ;--------------------------------------------------------
|
|
31 .area REG_BANK_0 (REL,OVR,DATA)
|
|
000000 32 .ds 8
|
|
33 ;--------------------------------------------------------
|
|
34 ; internal ram data
|
|
35 ;--------------------------------------------------------
|
|
36 .area DSEG (DATA)
|
|
37 ;--------------------------------------------------------
|
|
38 ; overlayable items in internal ram
|
|
39 ;--------------------------------------------------------
|
|
40 ;--------------------------------------------------------
|
|
41 ; indirectly addressable internal ram data
|
|
42 ;--------------------------------------------------------
|
|
43 .area ISEG (DATA)
|
|
44 ;--------------------------------------------------------
|
|
45 ; absolute internal ram data
|
|
46 ;--------------------------------------------------------
|
|
47 .area IABS (ABS,DATA)
|
|
48 .area IABS (ABS,DATA)
|
|
49 ;--------------------------------------------------------
|
|
50 ; bit data
|
|
51 ;--------------------------------------------------------
|
|
52 .area BSEG (BIT)
|
|
53 ;--------------------------------------------------------
|
|
54 ; paged external ram data
|
|
55 ;--------------------------------------------------------
|
|
56 .area PSEG (PAG,XDATA)
|
|
57 ;--------------------------------------------------------
|
|
58 ; external ram data
|
|
59 ;--------------------------------------------------------
|
|
60 .area XSEG (XDATA)
|
|
000000 61 _handle_connection_buf_65536_59:
|
|
000000 62 .ds 100
|
|
63 ;--------------------------------------------------------
|
|
64 ; absolute external ram data
|
|
65 ;--------------------------------------------------------
|
|
66 .area XABS (ABS,XDATA)
|
|
67 ;--------------------------------------------------------
|
|
68 ; external initialized ram data
|
|
69 ;--------------------------------------------------------
|
|
70 .area XISEG (XDATA)
|
|
71 .area HOME (CODE)
|
|
72 .area GSINIT0 (CODE)
|
|
73 .area GSINIT1 (CODE)
|
|
74 .area GSINIT2 (CODE)
|
|
75 .area GSINIT3 (CODE)
|
|
76 .area GSINIT4 (CODE)
|
|
77 .area GSINIT5 (CODE)
|
|
78 .area GSINIT (CODE)
|
|
79 .area GSFINAL (CODE)
|
|
80 .area CSEG (CODE)
|
|
81 ;--------------------------------------------------------
|
|
82 ; global & static initialisations
|
|
83 ;--------------------------------------------------------
|
|
84 .area HOME (CODE)
|
|
85 .area GSINIT (CODE)
|
|
86 .area GSFINAL (CODE)
|
|
87 .area GSINIT (CODE)
|
|
88 ;--------------------------------------------------------
|
|
89 ; Home
|
|
90 ;--------------------------------------------------------
|
|
91 .area HOME (CODE)
|
|
92 .area HOME (CODE)
|
|
93 ;--------------------------------------------------------
|
|
94 ; code
|
|
95 ;--------------------------------------------------------
|
|
96 .area BANK1 (CODE)
|
|
97 ;------------------------------------------------------------
|
|
98 ;Allocation info for local variables in function 'hello_world_init'
|
|
99 ;------------------------------------------------------------
|
|
100 ; hello-world.c:43: hello_world_init(void)
|
|
101 ; -----------------------------------------
|
|
102 ; function hello_world_init
|
|
103 ; -----------------------------------------
|
|
000000 104 _hello_world_init:
|
|
000007 105 ar7 = 0x07
|
|
000006 106 ar6 = 0x06
|
|
000005 107 ar5 = 0x05
|
|
000004 108 ar4 = 0x04
|
|
000003 109 ar3 = 0x03
|
|
000002 110 ar2 = 0x02
|
|
000001 111 ar1 = 0x01
|
|
000000 112 ar0 = 0x00
|
|
113 ; hello-world.c:46: uip_listen(HTONS(1000));
|
|
000000 90 E8 03 [24] 114 mov dptr,#0xe803
|
|
115 ; hello-world.c:47: }
|
|
000003 02r00r00 [24] 116 ljmp _uip_listen
|
|
117 ;------------------------------------------------------------
|
|
118 ;Allocation info for local variables in function 'hello_world_appcall'
|
|
119 ;------------------------------------------------------------
|
|
120 ;s Allocated to registers r6 r7
|
|
121 ;------------------------------------------------------------
|
|
122 ; hello-world.c:57: hello_world_appcall(void)
|
|
123 ; -----------------------------------------
|
|
124 ; function hello_world_appcall
|
|
125 ; -----------------------------------------
|
|
000006 126 _hello_world_appcall:
|
|
127 ; hello-world.c:64: __xdata struct hello_world_state *s = &(uip_conn->appstate);
|
|
000006 74 1C [12] 128 mov a,#0x1c
|
|
000008 25*00 [12] 129 add a,_uip_conn
|
|
00000A FE [12] 130 mov r6,a
|
|
00000B E4 [12] 131 clr a
|
|
00000C 35*01 [12] 132 addc a,(_uip_conn + 1)
|
|
00000E FF [12] 133 mov r7,a
|
|
134 ; hello-world.c:70: if(uip_connected()) {
|
|
00000F 90r00r00 [24] 135 mov dptr,#_uip_flags
|
|
000012 E0 [24] 136 movx a,@dptr
|
|
000013 30 E6 1E [24] 137 jnb acc.6,00102$
|
|
138 ; hello-world.c:71: PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
|
|
000016 74 15 [12] 139 mov a,#0x15
|
|
000018 2E [12] 140 add a,r6
|
|
000019 F5*00 [12] 141 mov _psock_init_PARM_2,a
|
|
00001B E4 [12] 142 clr a
|
|
00001C 3F [12] 143 addc a,r7
|
|
00001D F5*01 [12] 144 mov (_psock_init_PARM_2 + 1),a
|
|
00001F 75*00 0A [24] 145 mov _psock_init_PARM_3,#0x0a
|
|
000022 75*01 00 [24] 146 mov (_psock_init_PARM_3 + 1),#0x00
|
|
000025 8E 82 [24] 147 mov dpl,r6
|
|
000027 8F 83 [24] 148 mov dph,r7
|
|
000029 C0 07 [24] 149 push ar7
|
|
00002B C0 06 [24] 150 push ar6
|
|
00002D 12r00r00 [24] 151 lcall _psock_init
|
|
000030 D0 06 [24] 152 pop ar6
|
|
000032 D0 07 [24] 153 pop ar7
|
|
000034 154 00102$:
|
|
155 ; hello-world.c:79: write_char('A');
|
|
000034 75 82 41 [24] 156 mov dpl,#0x41
|
|
000037 C0 07 [24] 157 push ar7
|
|
000039 C0 06 [24] 158 push ar6
|
|
00003B 12r00r00 [24] 159 lcall _write_char
|
|
00003E D0 06 [24] 160 pop ar6
|
|
000040 D0 07 [24] 161 pop ar7
|
|
162 ; hello-world.c:80: handle_connection(s);
|
|
000042 8E 82 [24] 163 mov dpl,r6
|
|
000044 8F 83 [24] 164 mov dph,r7
|
|
165 ; hello-world.c:81: }
|
|
000046 02r00r49 [24] 166 ljmp _handle_connection
|
|
167 ;------------------------------------------------------------
|
|
168 ;Allocation info for local variables in function 'handle_connection'
|
|
169 ;------------------------------------------------------------
|
|
170 ;s Allocated to registers r6 r7
|
|
171 ;PT_YIELD_FLAG Allocated to registers
|
|
172 ;buf Allocated with name '_handle_connection_buf_65536_59'
|
|
173 ;------------------------------------------------------------
|
|
174 ; hello-world.c:90: handle_connection(__xdata struct hello_world_state *s)
|
|
175 ; -----------------------------------------
|
|
176 ; function handle_connection
|
|
177 ; -----------------------------------------
|
|
000049 178 _handle_connection:
|
|
179 ; hello-world.c:94: PSOCK_BEGIN(&s->p);
|
|
000049 AE 82 [24] 180 mov r6,dpl
|
|
00004B AF 83 [24] 181 mov r7,dph
|
|
00004D E0 [24] 182 movx a,@dptr
|
|
00004E FC [12] 183 mov r4,a
|
|
00004F A3 [24] 184 inc dptr
|
|
000050 E0 [24] 185 movx a,@dptr
|
|
000051 FD [12] 186 mov r5,a
|
|
000052 BC 00 05 [24] 187 cjne r4,#0x00,00123$
|
|
000055 BD 00 02 [24] 188 cjne r5,#0x00,00123$
|
|
000058 80 08 [24] 189 sjmp 00101$
|
|
00005A 190 00123$:
|
|
00005A BC 63 56 [24] 191 cjne r4,#0x63,00108$
|
|
00005D BD 00 53 [24] 192 cjne r5,#0x00,00108$
|
|
000060 80 1E [24] 193 sjmp 00102$
|
|
000062 194 00101$:
|
|
195 ; hello-world.c:96: strtox(buf, "Hello. What is your name?\n");
|
|
000062 75*00r00 [24] 196 mov _strtox_PARM_2,#___str_0
|
|
000065 75*01s00 [24] 197 mov (_strtox_PARM_2 + 1),#(___str_0 >> 8)
|
|
000068 90r00r00 [24] 198 mov dptr,#_handle_connection_buf_65536_59
|
|
00006B C0 07 [24] 199 push ar7
|
|
00006D C0 06 [24] 200 push ar6
|
|
00006F 12r00r00 [24] 201 lcall _strtox
|
|
000072 D0 06 [24] 202 pop ar6
|
|
000074 D0 07 [24] 203 pop ar7
|
|
204 ; hello-world.c:99: PSOCK_READTO(&s->p, '\n');
|
|
000076 8E 82 [24] 205 mov dpl,r6
|
|
000078 8F 83 [24] 206 mov dph,r7
|
|
00007A 74 63 [12] 207 mov a,#0x63
|
|
00007C F0 [24] 208 movx @dptr,a
|
|
00007D E4 [12] 209 clr a
|
|
00007E A3 [24] 210 inc dptr
|
|
00007F F0 [24] 211 movx @dptr,a
|
|
000080 212 00102$:
|
|
000080 75*00 0A [24] 213 mov _psock_readto_PARM_2,#0x0a
|
|
000083 8E 82 [24] 214 mov dpl,r6
|
|
000085 8F 83 [24] 215 mov dph,r7
|
|
000087 C0 07 [24] 216 push ar7
|
|
000089 C0 06 [24] 217 push ar6
|
|
00008B 12r00r00 [24] 218 lcall _psock_readto
|
|
00008E E5 82 [12] 219 mov a,dpl
|
|
000090 D0 06 [24] 220 pop ar6
|
|
000092 D0 07 [24] 221 pop ar7
|
|
000094 70 03 [24] 222 jnz 00106$
|
|
000096 F5 82 [12] 223 mov dpl,a
|
|
000098 22 [24] 224 ret
|
|
000099 225 00106$:
|
|
226 ; hello-world.c:101: strtox(buf, "Name: ");
|
|
000099 75*00r1B [24] 227 mov _strtox_PARM_2,#___str_1
|
|
00009C 75*01s00 [24] 228 mov (_strtox_PARM_2 + 1),#(___str_1 >> 8)
|
|
00009F 90r00r00 [24] 229 mov dptr,#_handle_connection_buf_65536_59
|
|
0000A2 C0 07 [24] 230 push ar7
|
|
0000A4 C0 06 [24] 231 push ar6
|
|
0000A6 12r00r00 [24] 232 lcall _strtox
|
|
0000A9 D0 06 [24] 233 pop ar6
|
|
0000AB D0 07 [24] 234 pop ar7
|
|
235 ; hello-world.c:104: PSOCK_CLOSE(&s->p);
|
|
0000AD 90r00r00 [24] 236 mov dptr,#_uip_flags
|
|
0000B0 74 10 [12] 237 mov a,#0x10
|
|
0000B2 F0 [24] 238 movx @dptr,a
|
|
239 ; hello-world.c:106: PSOCK_END(&s->p);
|
|
0000B3 240 00108$:
|
|
0000B3 8E 82 [24] 241 mov dpl,r6
|
|
0000B5 8F 83 [24] 242 mov dph,r7
|
|
0000B7 E4 [12] 243 clr a
|
|
0000B8 F0 [24] 244 movx @dptr,a
|
|
0000B9 A3 [24] 245 inc dptr
|
|
0000BA F0 [24] 246 movx @dptr,a
|
|
0000BB 75 82 02 [24] 247 mov dpl,#0x02
|
|
248 ; hello-world.c:107: }
|
|
0000BE 22 [24] 249 ret
|
|
250 .area BANK1 (CODE)
|
|
251 .area CONST (CODE)
|
|
252 .area CONST (CODE)
|
|
000000 253 ___str_0:
|
|
000000 48 65 6C 6C 6F 2E 20 254 .ascii "Hello. What is your name?"
|
|
57 68 61 74 20 69 73
|
|
20 79 6F 75 72 20 6E
|
|
61 6D 65 3F
|
|
000019 0A 255 .db 0x0a
|
|
00001A 00 256 .db 0x00
|
|
257 .area BANK1 (CODE)
|
|
258 .area CONST (CODE)
|
|
00001B 259 ___str_1:
|
|
00001B 4E 61 6D 65 3A 20 260 .ascii "Name: "
|
|
000021 00 261 .db 0x00
|
|
262 .area BANK1 (CODE)
|
|
263 .area XINIT (CODE)
|
|
264 .area CABS (ABS,CODE)
|