ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 1
1 .cpu cortex-m3
2 .eabi_attribute 20, 1
3 .eabi_attribute 21, 1
4 .eabi_attribute 23, 3
5 .eabi_attribute 24, 1
6 .eabi_attribute 25, 1
7 .eabi_attribute 26, 1
8 .eabi_attribute 30, 1
9 .eabi_attribute 34, 1
10 .eabi_attribute 18, 4
11 .file "displayclass.cpp"
12 .text
13 .Ltext0:
14 .cfi_sections .debug_frame
15 .section .text._ZN12_GLOBAL__N_14swapIsEEvRT_S2_,"ax",%progbits
16 .align 1
17 .arch armv7-m
18 .syntax unified
19 .thumb
20 .thumb_func
21 .fpu softvfp
23 _ZN12_GLOBAL__N_14swapIsEEvRT_S2_:
24 .LVL0:
25 .LFB58:
26 .file 1 "../libOLED/src/displayclass.cpp"
1:../libOLED/src/displayclass.cpp **** /*
2:../libOLED/src/displayclass.cpp **** * displayclass.cpp
3:../libOLED/src/displayclass.cpp **** *
4:../libOLED/src/displayclass.cpp **** * Created on: 31 Oct 2020
5:../libOLED/src/displayclass.cpp **** * Author: mike
6:../libOLED/src/displayclass.cpp **** */
7:../libOLED/src/displayclass.cpp ****
8:../libOLED/src/displayclass.cpp **** #include "libOLED/displayclass.H"
9:../libOLED/src/displayclass.cpp ****
10:../libOLED/src/displayclass.cpp **** #include <cstring>
11:../libOLED/src/displayclass.cpp **** #include <cstdlib>
12:../libOLED/src/displayclass.cpp **** namespace
13:../libOLED/src/displayclass.cpp **** {
14:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETCONTRAST = 0x81;
15:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_DISPLAYALLON_RESUME = 0xA4;
16:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_DISPLAYALLON = 0xA5;
17:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_NORMALDISPLAY = 0xA6;
18:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_INVERTDISPLAY = 0xA7;
19:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_DISPLAYOFF = 0xAE;
20:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_DISPLAYON = 0xAF;
21:../libOLED/src/displayclass.cpp ****
22:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETDISPLAYOFFSET = 0xD3;
23:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETCOMPINS = 0xDA;
24:../libOLED/src/displayclass.cpp ****
25:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETVCOMDETECT = 0xDB;
26:../libOLED/src/displayclass.cpp ****
27:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETDISPLAYCLOCKDIV = 0xD5;
28:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETPRECHARGE = 0xD9;
29:../libOLED/src/displayclass.cpp ****
30:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETMULTIPLEX = 0xA8;
31:../libOLED/src/displayclass.cpp ****
32:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETLOWCOLUMN = 0x00;
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 2
33:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETHIGHCOLUMN = 0x10;
34:../libOLED/src/displayclass.cpp ****
35:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SETSTARTLINE = 0x40;
36:../libOLED/src/displayclass.cpp ****
37:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_MEMORYMODE = 0x20;
38:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_COLUMNADDR = 0x21;
39:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_PAGEADDR = 0x22;
40:../libOLED/src/displayclass.cpp ****
41:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_COMSCANINC = 0xC0;
42:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_COMSCANDEC = 0xC8;
43:../libOLED/src/displayclass.cpp ****
44:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SEGREMAP = 0xA0;
45:../libOLED/src/displayclass.cpp ****
46:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_CHARGEPUMP = 0x8D;
47:../libOLED/src/displayclass.cpp ****
48:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_EXTERNALVCC = 0x1;
49:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SWITCHCAPVCC = 0x2;
50:../libOLED/src/displayclass.cpp ****
51:../libOLED/src/displayclass.cpp **** // Scrolling #defines
52:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_ACTIVATE_SCROLL = 0x2F;
53:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_DEACTIVATE_SCROLL = 0x2E;
54:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_SET_VERTICAL_SCROLL_AREA = 0xA3;
55:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_RIGHT_HORIZONTAL_SCROLL = 0x26;
56:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_LEFT_HORIZONTAL_SCROLL = 0x27;
57:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL = 0x29;
58:../libOLED/src/displayclass.cpp **** uint8_t const SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL = 0x2A;
59:../libOLED/src/displayclass.cpp ****
60:../libOLED/src/displayclass.cpp **** template<class T>
61:../libOLED/src/displayclass.cpp **** void
62:../libOLED/src/displayclass.cpp **** swap (T &x, T &y)
27 .loc 1 62 5 view -0
28 .cfi_startproc
29 @ args = 0, pretend = 0, frame = 0
30 @ frame_needed = 0, uses_anonymous_args = 0
31 @ link register save eliminated.
63:../libOLED/src/displayclass.cpp **** {
64:../libOLED/src/displayclass.cpp **** T temp = x;
32 .loc 1 64 9 is_stmt 0 view .LVU1
33 0000 B0F90030 ldrsh r3, [r0]
34 .LVL1:
65:../libOLED/src/displayclass.cpp **** x = y;
35 .loc 1 65 7 view .LVU2
36 0004 B1F90020 ldrsh r2, [r1]
37 0008 0280 strh r2, [r0] @ movhi
66:../libOLED/src/displayclass.cpp **** y = temp;
38 .loc 1 66 7 view .LVU3
39 000a 0B80 strh r3, [r1] @ movhi
67:../libOLED/src/displayclass.cpp **** }
40 .loc 1 67 5 view .LVU4
41 000c 7047 bx lr
42 .cfi_endproc
43 .LFE58:
45 .section .text._ZN12_GLOBAL__N_13absIsEET_S1_,"ax",%progbits
46 .align 1
47 .syntax unified
48 .thumb
49 .thumb_func
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 3
50 .fpu softvfp
52 _ZN12_GLOBAL__N_13absIsEET_S1_:
53 .LVL2:
54 .LFB59:
68:../libOLED/src/displayclass.cpp ****
69:../libOLED/src/displayclass.cpp **** template<class T>
70:../libOLED/src/displayclass.cpp **** T
71:../libOLED/src/displayclass.cpp **** abs (T x)
55 .loc 1 71 5 is_stmt 1 view -0
56 .cfi_startproc
57 @ args = 0, pretend = 0, frame = 0
58 @ frame_needed = 0, uses_anonymous_args = 0
59 @ link register save eliminated.
72:../libOLED/src/displayclass.cpp **** {
73:../libOLED/src/displayclass.cpp **** return x < 0 ? -x : x;
60 .loc 1 73 20 is_stmt 0 view .LVU6
61 0000 0028 cmp r0, #0
62 0002 B8BF it lt
63 0004 4042 rsblt r0, r0, #0
64 .LVL3:
74:../libOLED/src/displayclass.cpp **** }
65 .loc 1 74 5 view .LVU7
66 0006 00B2 sxth r0, r0
67 0008 7047 bx lr
68 .cfi_endproc
69 .LFE59:
71 .section .text._ZdlPvj,"ax",%progbits
72 .align 1
73 .global _ZdlPvj
74 .syntax unified
75 .thumb
76 .thumb_func
77 .fpu softvfp
79 _ZdlPvj:
80 .LVL4:
81 .LFB32:
75:../libOLED/src/displayclass.cpp ****
76:../libOLED/src/displayclass.cpp **** }
77:../libOLED/src/displayclass.cpp **** // provided to allow a destructor to destroy something not deleted
78:../libOLED/src/displayclass.cpp **** // this is only OK because destructors shouldnt be needed
79:../libOLED/src/displayclass.cpp **** void
80:../libOLED/src/displayclass.cpp **** operator delete (void *data, unsigned int f)
81:../libOLED/src/displayclass.cpp **** {
82 .loc 1 81 1 is_stmt 1 view -0
83 .cfi_startproc
84 @ args = 0, pretend = 0, frame = 0
85 @ frame_needed = 0, uses_anonymous_args = 0
86 @ link register save eliminated.
82:../libOLED/src/displayclass.cpp **** (void) data;
87 .loc 1 82 3 view .LVU9
83:../libOLED/src/displayclass.cpp **** (void) f;
88 .loc 1 83 3 view .LVU10
84:../libOLED/src/displayclass.cpp **** }
89 .loc 1 84 1 is_stmt 0 view .LVU11
90 0000 7047 bx lr
91 .cfi_endproc
92 .LFE32:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 4
94 .section .text.__cxa_pure_virtual,"ax",%progbits
95 .align 1
96 .global __cxa_pure_virtual
97 .syntax unified
98 .thumb
99 .thumb_func
100 .fpu softvfp
102 __cxa_pure_virtual:
103 .LFB33:
85:../libOLED/src/displayclass.cpp ****
86:../libOLED/src/displayclass.cpp **** // provided to implement an "error handler" on pure virtual
87:../libOLED/src/displayclass.cpp **** extern "C" void
88:../libOLED/src/displayclass.cpp **** __cxa_pure_virtual ()
89:../libOLED/src/displayclass.cpp **** {
104 .loc 1 89 1 is_stmt 1 view -0
105 .cfi_startproc
106 @ Volatile: function does not return.
107 @ args = 0, pretend = 0, frame = 0
108 @ frame_needed = 0, uses_anonymous_args = 0
109 @ link register save eliminated.
110 .L5:
90:../libOLED/src/displayclass.cpp **** while (1)
111 .loc 1 90 3 discriminator 1 view .LVU13
112 0000 FEE7 b .L5
113 .cfi_endproc
114 .LFE33:
116 .section .text._ZN9display_tC2EiiiPh,"ax",%progbits
117 .align 1
118 .global _ZN9display_tC2EiiiPh
119 .syntax unified
120 .thumb
121 .thumb_func
122 .fpu softvfp
124 _ZN9display_tC2EiiiPh:
125 .LVL5:
126 .LFB35:
91:../libOLED/src/displayclass.cpp **** ;
92:../libOLED/src/displayclass.cpp **** }
93:../libOLED/src/displayclass.cpp ****
94:../libOLED/src/displayclass.cpp **** display_t::display_t (int const width, int const height, int const ramwidth,
127 .loc 1 94 1 view -0
128 .cfi_startproc
129 @ args = 4, pretend = 0, frame = 0
130 @ frame_needed = 0, uses_anonymous_args = 0
131 @ link register save eliminated.
132 .loc 1 94 1 is_stmt 0 view .LVU15
133 0000 30B4 push {r4, r5}
134 .LCFI0:
135 .cfi_def_cfa_offset 8
136 .cfi_offset 4, -8
137 .cfi_offset 5, -4
138 .LBB13:
95:../libOLED/src/displayclass.cpp **** uint8_t *const data) :
96:../libOLED/src/displayclass.cpp **** m_width (width), m_height (height), m_ramwidth (ramwidth), m_cursor_x (0), m_cursor_y (
97:../libOLED/src/displayclass.cpp **** 0), m_rotation (0), m_colour (WHITE), m_data (data)
139 .loc 1 97 52 view .LVU16
140 0002 074D ldr r5, .L8
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 5
141 0004 0560 str r5, [r0]
142 0006 4160 str r1, [r0, #4]
143 0008 8260 str r2, [r0, #8]
144 000a C360 str r3, [r0, #12]
145 000c 0023 movs r3, #0
146 .LVL6:
147 .loc 1 97 52 view .LVU17
148 000e 0361 str r3, [r0, #16]
149 0010 4361 str r3, [r0, #20]
150 0012 8361 str r3, [r0, #24]
151 0014 0123 movs r3, #1
152 0016 0377 strb r3, [r0, #28]
153 0018 029B ldr r3, [sp, #8]
154 001a 0362 str r3, [r0, #32]
155 .LBE13:
98:../libOLED/src/displayclass.cpp **** {
99:../libOLED/src/displayclass.cpp **** }
156 .loc 1 99 1 view .LVU18
157 001c 30BC pop {r4, r5}
158 .LCFI1:
159 .cfi_restore 5
160 .cfi_restore 4
161 .cfi_def_cfa_offset 0
162 .LVL7:
163 .loc 1 99 1 view .LVU19
164 001e 7047 bx lr
165 .L9:
166 .align 2
167 .L8:
168 0020 08000000 .word .LANCHOR0+8
169 .cfi_endproc
170 .LFE35:
172 .global _ZN9display_tC1EiiiPh
173 .thumb_set _ZN9display_tC1EiiiPh,_ZN9display_tC2EiiiPh
174 .section .text._ZN9display_tD2Ev,"ax",%progbits
175 .align 1
176 .global _ZN9display_tD2Ev
177 .syntax unified
178 .thumb
179 .thumb_func
180 .fpu softvfp
182 _ZN9display_tD2Ev:
183 .LVL8:
184 .LFB38:
100:../libOLED/src/displayclass.cpp ****
101:../libOLED/src/displayclass.cpp **** display_t::~display_t ()
185 .loc 1 101 1 is_stmt 1 view -0
186 .cfi_startproc
187 @ args = 0, pretend = 0, frame = 0
188 @ frame_needed = 0, uses_anonymous_args = 0
189 @ link register save eliminated.
102:../libOLED/src/displayclass.cpp **** {
103:../libOLED/src/displayclass.cpp ****
104:../libOLED/src/displayclass.cpp **** }
190 .loc 1 104 1 is_stmt 0 view .LVU21
191 0000 7047 bx lr
192 .cfi_endproc
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 6
193 .LFE38:
195 .global _ZN9display_tD1Ev
196 .thumb_set _ZN9display_tD1Ev,_ZN9display_tD2Ev
197 .section .text._ZN9display_tD0Ev,"ax",%progbits
198 .align 1
199 .global _ZN9display_tD0Ev
200 .syntax unified
201 .thumb
202 .thumb_func
203 .fpu softvfp
205 _ZN9display_tD0Ev:
206 .LVL9:
207 .LFB40:
101:../libOLED/src/displayclass.cpp **** {
208 .loc 1 101 1 is_stmt 1 view -0
209 .cfi_startproc
210 @ args = 0, pretend = 0, frame = 0
211 @ frame_needed = 0, uses_anonymous_args = 0
212 @ link register save eliminated.
213 .loc 1 104 1 is_stmt 0 view .LVU23
214 0000 7047 bx lr
215 .cfi_endproc
216 .LFE40:
218 .section .text._ZN9display_t5resetEv,"ax",%progbits
219 .align 1
220 .global _ZN9display_t5resetEv
221 .syntax unified
222 .thumb
223 .thumb_func
224 .fpu softvfp
226 _ZN9display_t5resetEv:
227 .LVL10:
228 .LFB41:
105:../libOLED/src/displayclass.cpp ****
106:../libOLED/src/displayclass.cpp **** void display_t::reset()
107:../libOLED/src/displayclass.cpp **** {
229 .loc 1 107 1 is_stmt 1 view -0
230 .cfi_startproc
231 @ args = 0, pretend = 0, frame = 0
232 @ frame_needed = 0, uses_anonymous_args = 0
233 .loc 1 107 1 is_stmt 0 view .LVU25
234 0000 08B5 push {r3, lr}
235 .LCFI2:
236 .cfi_def_cfa_offset 8
237 .cfi_offset 3, -8
238 .cfi_offset 14, -4
108:../libOLED/src/displayclass.cpp **** oledReset();
239 .loc 1 108 3 is_stmt 1 view .LVU26
240 .loc 1 108 13 is_stmt 0 view .LVU27
241 0002 0368 ldr r3, [r0]
242 0004 1B69 ldr r3, [r3, #16]
243 .loc 1 108 12 view .LVU28
244 0006 9847 blx r3
245 .LVL11:
109:../libOLED/src/displayclass.cpp **** }
246 .loc 1 109 1 view .LVU29
247 0008 08BD pop {r3, pc}
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 7
248 .cfi_endproc
249 .LFE41:
251 .section .text._ZN9display_t11getRotationEv,"ax",%progbits
252 .align 1
253 .global _ZN9display_t11getRotationEv
254 .syntax unified
255 .thumb
256 .thumb_func
257 .fpu softvfp
259 _ZN9display_t11getRotationEv:
260 .LVL12:
261 .LFB43:
110:../libOLED/src/displayclass.cpp ****
111:../libOLED/src/displayclass.cpp **** void
112:../libOLED/src/displayclass.cpp **** display_t::init ()
113:../libOLED/src/displayclass.cpp **** {
114:../libOLED/src/displayclass.cpp **** uint8_t const vccstate = SSD1306_EXTERNALVCC;
115:../libOLED/src/displayclass.cpp ****
116:../libOLED/src/displayclass.cpp ****
117:../libOLED/src/displayclass.cpp **** oledSetCD (0);
118:../libOLED/src/displayclass.cpp ****
119:../libOLED/src/displayclass.cpp **** // Init sequence for 128x32 or 128x64 OLED module
120:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYOFF); // 0xAE
121:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
122:../libOLED/src/displayclass.cpp **** oledWrite (0x80); // the suggested ratio 0x80
123:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETMULTIPLEX); // 0xA8
124:../libOLED/src/displayclass.cpp **** oledWrite (m_height - 1);
125:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYOFFSET); // 0xD3
126:../libOLED/src/displayclass.cpp **** oledWrite (0x0); // no offset
127:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETSTARTLINE | 0x0); // line #0
128:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_CHARGEPUMP); // 0x8D
129:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x10 : 0x14);
130:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_MEMORYMODE); // 0x20
131:../libOLED/src/displayclass.cpp **** oledWrite (0x00); // 0x0 act like ks0108
132:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SEGREMAP | 0x1);
133:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_COMSCANDEC);
134:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCOMPINS); // 0xDA
135:../libOLED/src/displayclass.cpp **** oledWrite (m_height == 32 ? 0x02 : 0x12);
136:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
137:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x9F : 0xCF);
138:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETPRECHARGE); // 0xd9
139:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x22 : 0xF1);
140:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETVCOMDETECT); // 0xDB
141:../libOLED/src/displayclass.cpp **** oledWrite (0x40);
142:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYALLON_RESUME); // 0xA4
143:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_NORMALDISPLAY); // 0xA6
144:../libOLED/src/displayclass.cpp ****
145:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYON); //--turn on oled panel
146:../libOLED/src/displayclass.cpp ****
147:../libOLED/src/displayclass.cpp **** clearDisplay ();
148:../libOLED/src/displayclass.cpp ****
149:../libOLED/src/displayclass.cpp **** }
150:../libOLED/src/displayclass.cpp ****
151:../libOLED/src/displayclass.cpp **** uint8_t
152:../libOLED/src/displayclass.cpp **** display_t::getRotation (void)
153:../libOLED/src/displayclass.cpp **** {
262 .loc 1 153 1 is_stmt 1 view -0
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 8
263 .cfi_startproc
264 @ args = 0, pretend = 0, frame = 0
265 @ frame_needed = 0, uses_anonymous_args = 0
266 @ link register save eliminated.
154:../libOLED/src/displayclass.cpp **** return m_rotation;
267 .loc 1 154 3 view .LVU31
155:../libOLED/src/displayclass.cpp **** }
268 .loc 1 155 1 is_stmt 0 view .LVU32
269 0000 007E ldrb r0, [r0, #24] @ zero_extendqisi2
270 .LVL13:
271 .loc 1 155 1 view .LVU33
272 0002 7047 bx lr
273 .cfi_endproc
274 .LFE43:
276 .section .text._ZN9display_t5widthEv,"ax",%progbits
277 .align 1
278 .global _ZN9display_t5widthEv
279 .syntax unified
280 .thumb
281 .thumb_func
282 .fpu softvfp
284 _ZN9display_t5widthEv:
285 .LVL14:
286 .LFB44:
156:../libOLED/src/displayclass.cpp ****
157:../libOLED/src/displayclass.cpp **** int16_t
158:../libOLED/src/displayclass.cpp **** display_t::width (void)
159:../libOLED/src/displayclass.cpp **** {
287 .loc 1 159 1 is_stmt 1 view -0
288 .cfi_startproc
289 @ args = 0, pretend = 0, frame = 0
290 @ frame_needed = 0, uses_anonymous_args = 0
291 @ link register save eliminated.
160:../libOLED/src/displayclass.cpp **** switch (m_rotation)
292 .loc 1 160 3 view .LVU35
293 .loc 1 160 11 is_stmt 0 view .LVU36
294 0000 8369 ldr r3, [r0, #24]
295 .loc 1 160 3 view .LVU37
296 0002 032B cmp r3, #3
297 0004 10D8 bhi .L22
298 0006 DFE803F0 tbb [pc, r3]
299 .L18:
300 000a 02 .byte (.L21-.L18)/2
301 000b 05 .byte (.L20-.L18)/2
302 000c 08 .byte (.L19-.L18)/2
303 000d 0B .byte (.L17-.L18)/2
304 .p2align 1
305 .L21:
161:../libOLED/src/displayclass.cpp **** {
162:../libOLED/src/displayclass.cpp **** case 0:
306 .loc 1 162 5 is_stmt 1 view .LVU38
163:../libOLED/src/displayclass.cpp **** return m_width;
307 .loc 1 163 7 view .LVU39
308 .loc 1 163 14 is_stmt 0 view .LVU40
309 000e B0F90400 ldrsh r0, [r0, #4]
310 .LVL15:
311 .loc 1 163 14 view .LVU41
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 9
312 0012 7047 bx lr
313 .LVL16:
314 .L20:
164:../libOLED/src/displayclass.cpp **** break;
315 .loc 1 164 7 is_stmt 1 view .LVU42
165:../libOLED/src/displayclass.cpp **** case 1:
316 .loc 1 165 5 view .LVU43
166:../libOLED/src/displayclass.cpp **** return m_width;
317 .loc 1 166 7 view .LVU44
318 .loc 1 166 14 is_stmt 0 view .LVU45
319 0014 B0F90400 ldrsh r0, [r0, #4]
320 .LVL17:
321 .loc 1 166 14 view .LVU46
322 0018 7047 bx lr
323 .LVL18:
324 .L19:
167:../libOLED/src/displayclass.cpp **** break;
325 .loc 1 167 7 is_stmt 1 view .LVU47
168:../libOLED/src/displayclass.cpp **** case 2:
326 .loc 1 168 5 view .LVU48
169:../libOLED/src/displayclass.cpp **** return m_height;
327 .loc 1 169 7 view .LVU49
328 .loc 1 169 14 is_stmt 0 view .LVU50
329 001a B0F90800 ldrsh r0, [r0, #8]
330 .LVL19:
331 .loc 1 169 14 view .LVU51
332 001e 7047 bx lr
333 .LVL20:
334 .L17:
170:../libOLED/src/displayclass.cpp **** break;
335 .loc 1 170 7 is_stmt 1 view .LVU52
171:../libOLED/src/displayclass.cpp **** case 3:
336 .loc 1 171 5 view .LVU53
172:../libOLED/src/displayclass.cpp **** return -m_width;
337 .loc 1 172 7 view .LVU54
338 .loc 1 172 15 is_stmt 0 view .LVU55
339 0020 4068 ldr r0, [r0, #4]
340 .LVL21:
341 .loc 1 172 15 view .LVU56
342 0022 4042 rsbs r0, r0, #0
343 0024 00B2 sxth r0, r0
344 0026 7047 bx lr
345 .LVL22:
346 .L22:
173:../libOLED/src/displayclass.cpp **** break;
174:../libOLED/src/displayclass.cpp **** }
175:../libOLED/src/displayclass.cpp **** return 0;
347 .loc 1 175 10 view .LVU57
348 0028 0020 movs r0, #0
349 .LVL23:
176:../libOLED/src/displayclass.cpp **** }
350 .loc 1 176 1 view .LVU58
351 002a 7047 bx lr
352 .cfi_endproc
353 .LFE44:
355 .section .text._ZN9display_t6heightEv,"ax",%progbits
356 .align 1
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 10
357 .global _ZN9display_t6heightEv
358 .syntax unified
359 .thumb
360 .thumb_func
361 .fpu softvfp
363 _ZN9display_t6heightEv:
364 .LVL24:
365 .LFB45:
177:../libOLED/src/displayclass.cpp ****
178:../libOLED/src/displayclass.cpp **** int16_t
179:../libOLED/src/displayclass.cpp **** display_t::height (void)
180:../libOLED/src/displayclass.cpp **** {
366 .loc 1 180 1 is_stmt 1 view -0
367 .cfi_startproc
368 @ args = 0, pretend = 0, frame = 0
369 @ frame_needed = 0, uses_anonymous_args = 0
370 @ link register save eliminated.
181:../libOLED/src/displayclass.cpp **** switch (m_rotation)
371 .loc 1 181 3 view .LVU60
372 .loc 1 181 11 is_stmt 0 view .LVU61
373 0000 8369 ldr r3, [r0, #24]
374 .loc 1 181 3 view .LVU62
375 0002 032B cmp r3, #3
376 0004 10D8 bhi .L30
377 0006 DFE803F0 tbb [pc, r3]
378 .L26:
379 000a 02 .byte (.L29-.L26)/2
380 000b 05 .byte (.L28-.L26)/2
381 000c 08 .byte (.L27-.L26)/2
382 000d 0B .byte (.L25-.L26)/2
383 .p2align 1
384 .L29:
182:../libOLED/src/displayclass.cpp **** {
183:../libOLED/src/displayclass.cpp **** case 0:
385 .loc 1 183 5 is_stmt 1 view .LVU63
184:../libOLED/src/displayclass.cpp **** return m_height;
386 .loc 1 184 7 view .LVU64
387 .loc 1 184 14 is_stmt 0 view .LVU65
388 000e B0F90800 ldrsh r0, [r0, #8]
389 .LVL25:
390 .loc 1 184 14 view .LVU66
391 0012 7047 bx lr
392 .LVL26:
393 .L28:
185:../libOLED/src/displayclass.cpp **** break;
394 .loc 1 185 7 is_stmt 1 view .LVU67
186:../libOLED/src/displayclass.cpp **** case 1:
395 .loc 1 186 5 view .LVU68
187:../libOLED/src/displayclass.cpp **** return m_height;
396 .loc 1 187 7 view .LVU69
397 .loc 1 187 14 is_stmt 0 view .LVU70
398 0014 B0F90800 ldrsh r0, [r0, #8]
399 .LVL27:
400 .loc 1 187 14 view .LVU71
401 0018 7047 bx lr
402 .LVL28:
403 .L27:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 11
188:../libOLED/src/displayclass.cpp **** break;
404 .loc 1 188 7 is_stmt 1 view .LVU72
189:../libOLED/src/displayclass.cpp **** case 2:
405 .loc 1 189 5 view .LVU73
190:../libOLED/src/displayclass.cpp **** return m_width;
406 .loc 1 190 7 view .LVU74
407 .loc 1 190 14 is_stmt 0 view .LVU75
408 001a B0F90400 ldrsh r0, [r0, #4]
409 .LVL29:
410 .loc 1 190 14 view .LVU76
411 001e 7047 bx lr
412 .LVL30:
413 .L25:
191:../libOLED/src/displayclass.cpp **** break;
414 .loc 1 191 7 is_stmt 1 view .LVU77
192:../libOLED/src/displayclass.cpp **** case 3:
415 .loc 1 192 5 view .LVU78
193:../libOLED/src/displayclass.cpp **** return -m_height;
416 .loc 1 193 7 view .LVU79
417 .loc 1 193 15 is_stmt 0 view .LVU80
418 0020 8068 ldr r0, [r0, #8]
419 .LVL31:
420 .loc 1 193 15 view .LVU81
421 0022 4042 rsbs r0, r0, #0
422 0024 00B2 sxth r0, r0
423 0026 7047 bx lr
424 .LVL32:
425 .L30:
194:../libOLED/src/displayclass.cpp **** break;
195:../libOLED/src/displayclass.cpp **** }
196:../libOLED/src/displayclass.cpp **** return 0;
426 .loc 1 196 10 view .LVU82
427 0028 0020 movs r0, #0
428 .LVL33:
197:../libOLED/src/displayclass.cpp **** }
429 .loc 1 197 1 view .LVU83
430 002a 7047 bx lr
431 .cfi_endproc
432 .LFE45:
434 .section .text._ZN9display_t9drawPixelEssb,"ax",%progbits
435 .align 1
436 .global _ZN9display_t9drawPixelEssb
437 .syntax unified
438 .thumb
439 .thumb_func
440 .fpu softvfp
442 _ZN9display_t9drawPixelEssb:
443 .LVL34:
444 .LFB46:
198:../libOLED/src/displayclass.cpp ****
199:../libOLED/src/displayclass.cpp **** // the most basic function, set a single pixel
200:../libOLED/src/displayclass.cpp **** void
201:../libOLED/src/displayclass.cpp **** display_t::drawPixel (int16_t x, int16_t y, bool pixel)
202:../libOLED/src/displayclass.cpp **** {
445 .loc 1 202 1 is_stmt 1 view -0
446 .cfi_startproc
447 @ args = 0, pretend = 0, frame = 8
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 12
448 @ frame_needed = 0, uses_anonymous_args = 0
449 .loc 1 202 1 is_stmt 0 view .LVU85
450 0000 F0B5 push {r4, r5, r6, r7, lr}
451 .LCFI3:
452 .cfi_def_cfa_offset 20
453 .cfi_offset 4, -20
454 .cfi_offset 5, -16
455 .cfi_offset 6, -12
456 .cfi_offset 7, -8
457 .cfi_offset 14, -4
458 0002 83B0 sub sp, sp, #12
459 .LCFI4:
460 .cfi_def_cfa_offset 32
461 0004 ADF80610 strh r1, [sp, #6] @ movhi
462 0008 ADF80420 strh r2, [sp, #4] @ movhi
203:../libOLED/src/displayclass.cpp **** if ((x < 0) || (x >= m_width) || (y < 0) || (y >= m_height))
463 .loc 1 203 3 is_stmt 1 view .LVU86
464 000c 0029 cmp r1, #0
465 .LVL35:
466 .loc 1 203 3 is_stmt 0 view .LVU87
467 000e 73DB blt .L31
468 .loc 1 203 24 discriminator 1 view .LVU88
469 0010 4268 ldr r2, [r0, #4]
470 .LVL36:
471 .loc 1 203 15 discriminator 1 view .LVU89
472 0012 9142 cmp r1, r2
473 0014 70DA bge .L31
474 .loc 1 203 39 discriminator 2 view .LVU90
475 0016 BDF90460 ldrsh r6, [sp, #4]
476 .loc 1 203 33 discriminator 2 view .LVU91
477 001a 002E cmp r6, #0
478 001c 6CDB blt .L31
479 .loc 1 203 53 discriminator 3 view .LVU92
480 001e 8768 ldr r7, [r0, #8]
481 .loc 1 203 44 discriminator 3 view .LVU93
482 0020 BE42 cmp r6, r7
483 0022 69DA bge .L31
484 0024 1D46 mov r5, r3
485 0026 0446 mov r4, r0
204:../libOLED/src/displayclass.cpp **** return;
205:../libOLED/src/displayclass.cpp ****
206:../libOLED/src/displayclass.cpp **** // check rotation, move pixel around if necessary
207:../libOLED/src/displayclass.cpp **** switch (m_rotation)
486 .loc 1 207 3 is_stmt 1 view .LVU94
487 .loc 1 207 11 is_stmt 0 view .LVU95
488 0028 8369 ldr r3, [r0, #24]
489 .LVL37:
490 .loc 1 207 3 view .LVU96
491 002a 022B cmp r3, #2
492 002c 1DD0 beq .L33
493 002e 032B cmp r3, #3
494 0030 26D0 beq .L34
495 0032 012B cmp r3, #1
496 0034 0BD0 beq .L47
497 .LVL38:
498 .L35:
208:../libOLED/src/displayclass.cpp **** {
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 13
209:../libOLED/src/displayclass.cpp **** case 1:
210:../libOLED/src/displayclass.cpp **** swap (x, y);
211:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
212:../libOLED/src/displayclass.cpp **** break;
213:../libOLED/src/displayclass.cpp **** case 2:
214:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
215:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
216:../libOLED/src/displayclass.cpp **** break;
217:../libOLED/src/displayclass.cpp **** case 3:
218:../libOLED/src/displayclass.cpp **** swap (x, y);
219:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
220:../libOLED/src/displayclass.cpp **** break;
221:../libOLED/src/displayclass.cpp **** }
222:../libOLED/src/displayclass.cpp ****
223:../libOLED/src/displayclass.cpp **** // x is which column
224:../libOLED/src/displayclass.cpp **** // BLACK, and 0, invert 0
225:../libOLED/src/displayclass.cpp **** // WHITE, and 0, invert 1
226:../libOLED/src/displayclass.cpp **** // OVERLAY, and 1 (preserve) , invert 0/
227:../libOLED/src/displayclass.cpp **** // INVERT, and 1, (preserve) , invert 1
228:../libOLED/src/displayclass.cpp ****
229:../libOLED/src/displayclass.cpp **** switch (m_colour)
499 .loc 1 229 3 is_stmt 1 view .LVU97
500 .loc 1 229 11 is_stmt 0 view .LVU98
501 0036 237F ldrb r3, [r4, #28] @ zero_extendqisi2
502 .loc 1 229 3 view .LVU99
503 0038 012B cmp r3, #1
504 003a 2FD9 bls .L48
505 .L36:
230:../libOLED/src/displayclass.cpp **** {
231:../libOLED/src/displayclass.cpp **** case BLACK:
232:../libOLED/src/displayclass.cpp **** case WHITE:
233:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] &= ~(1 << (y & 7));
234:../libOLED/src/displayclass.cpp **** break;
235:../libOLED/src/displayclass.cpp **** default:
236:../libOLED/src/displayclass.cpp **** break;
237:../libOLED/src/displayclass.cpp **** }
238:../libOLED/src/displayclass.cpp **** uint8_t pixData = 0;
506 .loc 1 238 3 is_stmt 1 view .LVU100
507 .LVL39:
239:../libOLED/src/displayclass.cpp **** switch (m_colour)
508 .loc 1 239 3 view .LVU101
509 .loc 1 239 11 is_stmt 0 view .LVU102
510 003c 237F ldrb r3, [r4, #28] @ zero_extendqisi2
511 .loc 1 239 3 view .LVU103
512 003e 002B cmp r3, #0
513 0040 43D0 beq .L38
514 0042 032B cmp r3, #3
515 0044 44D8 bhi .L42
240:../libOLED/src/displayclass.cpp **** {
241:../libOLED/src/displayclass.cpp **** case BLACK:
242:../libOLED/src/displayclass.cpp **** pixData = pixel ? 0 : 1;
243:../libOLED/src/displayclass.cpp **** break;
244:../libOLED/src/displayclass.cpp **** case WHITE:
516 .loc 1 244 5 is_stmt 1 view .LVU104
245:../libOLED/src/displayclass.cpp **** case OVERLAY:
517 .loc 1 245 5 view .LVU105
246:../libOLED/src/displayclass.cpp **** case INVERT:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 14
518 .loc 1 246 5 view .LVU106
247:../libOLED/src/displayclass.cpp **** pixData = pixel ? 1 : 0;
519 .loc 1 247 8 view .LVU107
520 .loc 1 247 16 is_stmt 0 view .LVU108
521 0046 002D cmp r5, #0
522 0048 5AD0 beq .L44
523 004a 0121 movs r1, #1
524 004c 41E0 b .L39
525 .LVL40:
526 .L47:
209:../libOLED/src/displayclass.cpp **** swap (x, y);
527 .loc 1 209 5 is_stmt 1 view .LVU109
210:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
528 .loc 1 210 7 view .LVU110
210:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
529 .loc 1 210 12 is_stmt 0 view .LVU111
530 004e 01A9 add r1, sp, #4
531 .LVL41:
210:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
532 .loc 1 210 12 view .LVU112
533 0050 0DF10600 add r0, sp, #6
534 .LVL42:
210:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
535 .loc 1 210 12 view .LVU113
536 0054 FFF7FEFF bl _ZN12_GLOBAL__N_14swapIsEEvRT_S2_
537 .LVL43:
211:../libOLED/src/displayclass.cpp **** break;
538 .loc 1 211 7 is_stmt 1 view .LVU114
211:../libOLED/src/displayclass.cpp **** break;
539 .loc 1 211 11 is_stmt 0 view .LVU115
540 0058 6368 ldr r3, [r4, #4]
211:../libOLED/src/displayclass.cpp **** break;
541 .loc 1 211 19 view .LVU116
542 005a BDF80620 ldrh r2, [sp, #6]
543 005e 9B1A subs r3, r3, r2
544 0060 9BB2 uxth r3, r3
211:../libOLED/src/displayclass.cpp **** break;
545 .loc 1 211 23 view .LVU117
546 0062 013B subs r3, r3, #1
211:../libOLED/src/displayclass.cpp **** break;
547 .loc 1 211 9 view .LVU118
548 0064 ADF80630 strh r3, [sp, #6] @ movhi
212:../libOLED/src/displayclass.cpp **** case 2:
549 .loc 1 212 7 is_stmt 1 view .LVU119
550 0068 E5E7 b .L35
551 .LVL44:
552 .L33:
213:../libOLED/src/displayclass.cpp **** x = m_width - x - 1;
553 .loc 1 213 5 view .LVU120
214:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
554 .loc 1 214 7 view .LVU121
214:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
555 .loc 1 214 19 is_stmt 0 view .LVU122
556 006a 521A subs r2, r2, r1
557 006c 92B2 uxth r2, r2
214:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
558 .loc 1 214 23 view .LVU123
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 15
559 006e 013A subs r2, r2, #1
214:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
560 .loc 1 214 9 view .LVU124
561 0070 ADF80620 strh r2, [sp, #6] @ movhi
562 .LVL45:
215:../libOLED/src/displayclass.cpp **** break;
563 .loc 1 215 7 is_stmt 1 view .LVU125
215:../libOLED/src/displayclass.cpp **** break;
564 .loc 1 215 20 is_stmt 0 view .LVU126
565 0074 BB1B subs r3, r7, r6
566 0076 9BB2 uxth r3, r3
215:../libOLED/src/displayclass.cpp **** break;
567 .loc 1 215 24 view .LVU127
568 0078 013B subs r3, r3, #1
215:../libOLED/src/displayclass.cpp **** break;
569 .loc 1 215 9 view .LVU128
570 007a ADF80430 strh r3, [sp, #4] @ movhi
571 .LVL46:
216:../libOLED/src/displayclass.cpp **** case 3:
572 .loc 1 216 7 is_stmt 1 view .LVU129
573 007e DAE7 b .L35
574 .LVL47:
575 .L34:
217:../libOLED/src/displayclass.cpp **** swap (x, y);
576 .loc 1 217 5 view .LVU130
218:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
577 .loc 1 218 7 view .LVU131
218:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
578 .loc 1 218 12 is_stmt 0 view .LVU132
579 0080 01A9 add r1, sp, #4
580 .LVL48:
218:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
581 .loc 1 218 12 view .LVU133
582 0082 0DF10600 add r0, sp, #6
583 .LVL49:
218:../libOLED/src/displayclass.cpp **** y = m_height - y - 1;
584 .loc 1 218 12 view .LVU134
585 0086 FFF7FEFF bl _ZN12_GLOBAL__N_14swapIsEEvRT_S2_
586 .LVL50:
219:../libOLED/src/displayclass.cpp **** break;
587 .loc 1 219 7 is_stmt 1 view .LVU135
219:../libOLED/src/displayclass.cpp **** break;
588 .loc 1 219 11 is_stmt 0 view .LVU136
589 008a A368 ldr r3, [r4, #8]
219:../libOLED/src/displayclass.cpp **** break;
590 .loc 1 219 20 view .LVU137
591 008c BDF80420 ldrh r2, [sp, #4]
592 0090 9B1A subs r3, r3, r2
593 0092 9BB2 uxth r3, r3
219:../libOLED/src/displayclass.cpp **** break;
594 .loc 1 219 24 view .LVU138
595 0094 013B subs r3, r3, #1
219:../libOLED/src/displayclass.cpp **** break;
596 .loc 1 219 9 view .LVU139
597 0096 ADF80430 strh r3, [sp, #4] @ movhi
220:../libOLED/src/displayclass.cpp **** }
598 .loc 1 220 7 is_stmt 1 view .LVU140
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 16
599 009a CCE7 b .L35
600 .L48:
231:../libOLED/src/displayclass.cpp **** case WHITE:
601 .loc 1 231 5 view .LVU141
232:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] &= ~(1 << (y & 7));
602 .loc 1 232 5 view .LVU142
233:../libOLED/src/displayclass.cpp **** break;
603 .loc 1 233 7 view .LVU143
604 009c 206A ldr r0, [r4, #32]
233:../libOLED/src/displayclass.cpp **** break;
605 .loc 1 233 21 is_stmt 0 view .LVU144
606 009e BDF90420 ldrsh r2, [sp, #4]
607 00a2 1346 mov r3, r2
608 00a4 002A cmp r2, #0
609 00a6 0EDB blt .L49
610 .L37:
611 00a8 DB10 asrs r3, r3, #3
233:../libOLED/src/displayclass.cpp **** break;
612 .loc 1 233 28 view .LVU145
613 00aa 6668 ldr r6, [r4, #4]
233:../libOLED/src/displayclass.cpp **** break;
614 .loc 1 233 37 view .LVU146
615 00ac BDF90610 ldrsh r1, [sp, #6]
616 00b0 06FB0313 mla r3, r6, r3, r1
233:../libOLED/src/displayclass.cpp **** break;
617 .loc 1 233 50 view .LVU147
618 00b4 02F00702 and r2, r2, #7
233:../libOLED/src/displayclass.cpp **** break;
619 .loc 1 233 44 view .LVU148
620 00b8 0121 movs r1, #1
621 00ba 9140 lsls r1, r1, r2
233:../libOLED/src/displayclass.cpp **** break;
622 .loc 1 233 37 view .LVU149
623 00bc C25C ldrb r2, [r0, r3] @ zero_extendqisi2
624 00be 22EA0102 bic r2, r2, r1
625 00c2 C254 strb r2, [r0, r3]
234:../libOLED/src/displayclass.cpp **** default:
626 .loc 1 234 7 is_stmt 1 view .LVU150
627 00c4 BAE7 b .L36
628 .L49:
233:../libOLED/src/displayclass.cpp **** break;
629 .loc 1 233 21 is_stmt 0 view .LVU151
630 00c6 D31D adds r3, r2, #7
631 00c8 EEE7 b .L37
632 .LVL51:
633 .L38:
241:../libOLED/src/displayclass.cpp **** pixData = pixel ? 0 : 1;
634 .loc 1 241 5 is_stmt 1 view .LVU152
242:../libOLED/src/displayclass.cpp **** break;
635 .loc 1 242 7 view .LVU153
242:../libOLED/src/displayclass.cpp **** break;
636 .loc 1 242 15 is_stmt 0 view .LVU154
637 00ca BDB1 cbz r5, .L43
638 00cc 0021 movs r1, #0
639 00ce 00E0 b .L39
640 .L42:
238:../libOLED/src/displayclass.cpp **** switch (m_colour)
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 17
641 .loc 1 238 11 view .LVU155
642 00d0 0021 movs r1, #0
643 .L39:
644 .LVL52:
248:../libOLED/src/displayclass.cpp **** break;
249:../libOLED/src/displayclass.cpp **** }
250:../libOLED/src/displayclass.cpp ****
251:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] ^= (pixData << (y & 7));
645 .loc 1 251 3 is_stmt 1 view .LVU156
646 00d2 206A ldr r0, [r4, #32]
647 .loc 1 251 17 is_stmt 0 view .LVU157
648 00d4 BDF90420 ldrsh r2, [sp, #4]
649 00d8 1346 mov r3, r2
650 00da 002A cmp r2, #0
651 00dc 12DB blt .L50
652 .L41:
653 00de DB10 asrs r3, r3, #3
654 .loc 1 251 24 view .LVU158
655 00e0 6568 ldr r5, [r4, #4]
656 .loc 1 251 33 view .LVU159
657 00e2 BDF90640 ldrsh r4, [sp, #6]
658 .LVL53:
659 .loc 1 251 33 view .LVU160
660 00e6 05FB0343 mla r3, r5, r3, r4
661 .loc 1 251 51 view .LVU161
662 00ea 02F00702 and r2, r2, #7
663 .loc 1 251 45 view .LVU162
664 00ee 01FA02F2 lsl r2, r1, r2
665 .loc 1 251 33 view .LVU163
666 00f2 C15C ldrb r1, [r0, r3] @ zero_extendqisi2
667 .LVL54:
668 .loc 1 251 33 view .LVU164
669 00f4 4A40 eors r2, r2, r1
670 00f6 C254 strb r2, [r0, r3]
671 .L31:
252:../libOLED/src/displayclass.cpp ****
253:../libOLED/src/displayclass.cpp **** }
672 .loc 1 253 1 view .LVU165
673 00f8 03B0 add sp, sp, #12
674 .LCFI5:
675 .cfi_remember_state
676 .cfi_def_cfa_offset 20
677 @ sp needed
678 00fa F0BD pop {r4, r5, r6, r7, pc}
679 .LVL55:
680 .L43:
681 .LCFI6:
682 .cfi_restore_state
242:../libOLED/src/displayclass.cpp **** break;
683 .loc 1 242 15 view .LVU166
684 00fc 0121 movs r1, #1
685 00fe E8E7 b .L39
686 .L44:
247:../libOLED/src/displayclass.cpp **** break;
687 .loc 1 247 16 view .LVU167
688 0100 0021 movs r1, #0
689 0102 E6E7 b .L39
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 18
690 .LVL56:
691 .L50:
251:../libOLED/src/displayclass.cpp ****
692 .loc 1 251 17 view .LVU168
693 0104 D31D adds r3, r2, #7
694 0106 EAE7 b .L41
695 .cfi_endproc
696 .LFE46:
698 .section .text._ZN9display_t13invertDisplayEh,"ax",%progbits
699 .align 1
700 .global _ZN9display_t13invertDisplayEh
701 .syntax unified
702 .thumb
703 .thumb_func
704 .fpu softvfp
706 _ZN9display_t13invertDisplayEh:
707 .LVL57:
708 .LFB47:
254:../libOLED/src/displayclass.cpp ****
255:../libOLED/src/displayclass.cpp **** void
256:../libOLED/src/displayclass.cpp **** display_t::invertDisplay (uint8_t i)
257:../libOLED/src/displayclass.cpp **** {
709 .loc 1 257 1 is_stmt 1 view -0
710 .cfi_startproc
711 @ args = 0, pretend = 0, frame = 0
712 @ frame_needed = 0, uses_anonymous_args = 0
713 .loc 1 257 1 is_stmt 0 view .LVU170
714 0000 38B5 push {r3, r4, r5, lr}
715 .LCFI7:
716 .cfi_def_cfa_offset 16
717 .cfi_offset 3, -16
718 .cfi_offset 4, -12
719 .cfi_offset 5, -8
720 .cfi_offset 14, -4
721 0002 0446 mov r4, r0
722 0004 0D46 mov r5, r1
258:../libOLED/src/displayclass.cpp **** oledSetCD (0);
723 .loc 1 258 3 is_stmt 1 view .LVU171
724 .loc 1 258 15 is_stmt 0 view .LVU172
725 0006 0368 ldr r3, [r0]
726 0008 9B68 ldr r3, [r3, #8]
727 .loc 1 258 13 view .LVU173
728 000a 0021 movs r1, #0
729 .LVL58:
730 .loc 1 258 13 view .LVU174
731 000c 9847 blx r3
732 .LVL59:
259:../libOLED/src/displayclass.cpp **** oledWrite (i ? SSD1306_INVERTDISPLAY : SSD1306_NORMALDISPLAY);
733 .loc 1 259 3 is_stmt 1 view .LVU175
734 .loc 1 259 63 is_stmt 0 view .LVU176
735 000e 2368 ldr r3, [r4]
736 0010 DB68 ldr r3, [r3, #12]
737 .loc 1 259 13 view .LVU177
738 0012 1DB1 cbz r5, .L53
739 0014 A721 movs r1, #167
740 .L52:
741 .loc 1 259 13 discriminator 4 view .LVU178
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 19
742 0016 2046 mov r0, r4
743 0018 9847 blx r3
744 .LVL60:
260:../libOLED/src/displayclass.cpp **** }
745 .loc 1 260 1 discriminator 4 view .LVU179
746 001a 38BD pop {r3, r4, r5, pc}
747 .LVL61:
748 .L53:
259:../libOLED/src/displayclass.cpp **** oledWrite (i ? SSD1306_INVERTDISPLAY : SSD1306_NORMALDISPLAY);
749 .loc 1 259 13 view .LVU180
750 001c A621 movs r1, #166
751 001e FAE7 b .L52
752 .cfi_endproc
753 .LFE47:
755 .section .text._ZN9display_t16startscrollrightEhh,"ax",%progbits
756 .align 1
757 .global _ZN9display_t16startscrollrightEhh
758 .syntax unified
759 .thumb
760 .thumb_func
761 .fpu softvfp
763 _ZN9display_t16startscrollrightEhh:
764 .LVL62:
765 .LFB48:
261:../libOLED/src/displayclass.cpp ****
262:../libOLED/src/displayclass.cpp **** // startscrollright
263:../libOLED/src/displayclass.cpp **** // Activate a right handed scroll for rows start through stop
264:../libOLED/src/displayclass.cpp **** // Hint, the display is 16 rows tall. To scroll the whole display, run:
265:../libOLED/src/displayclass.cpp **** // display.scrollright(0x00, 0x0F)
266:../libOLED/src/displayclass.cpp **** void
267:../libOLED/src/displayclass.cpp **** display_t::startscrollright (uint8_t start, uint8_t stop)
268:../libOLED/src/displayclass.cpp **** {
766 .loc 1 268 1 is_stmt 1 view -0
767 .cfi_startproc
768 @ args = 0, pretend = 0, frame = 0
769 @ frame_needed = 0, uses_anonymous_args = 0
770 .loc 1 268 1 is_stmt 0 view .LVU182
771 0000 70B5 push {r4, r5, r6, lr}
772 .LCFI8:
773 .cfi_def_cfa_offset 16
774 .cfi_offset 4, -16
775 .cfi_offset 5, -12
776 .cfi_offset 6, -8
777 .cfi_offset 14, -4
778 0002 0446 mov r4, r0
779 0004 0E46 mov r6, r1
780 0006 1546 mov r5, r2
269:../libOLED/src/displayclass.cpp **** oledSetCD (0);
781 .loc 1 269 3 is_stmt 1 view .LVU183
782 .loc 1 269 15 is_stmt 0 view .LVU184
783 0008 0368 ldr r3, [r0]
784 000a 9B68 ldr r3, [r3, #8]
785 .loc 1 269 13 view .LVU185
786 000c 0021 movs r1, #0
787 .LVL63:
788 .loc 1 269 13 view .LVU186
789 000e 9847 blx r3
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 20
790 .LVL64:
270:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_RIGHT_HORIZONTAL_SCROLL);
791 .loc 1 270 3 is_stmt 1 view .LVU187
792 .loc 1 270 45 is_stmt 0 view .LVU188
793 0010 2368 ldr r3, [r4]
794 0012 DB68 ldr r3, [r3, #12]
795 .loc 1 270 13 view .LVU189
796 0014 2621 movs r1, #38
797 0016 2046 mov r0, r4
798 0018 9847 blx r3
799 .LVL65:
271:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
800 .loc 1 271 3 is_stmt 1 view .LVU190
801 .loc 1 271 18 is_stmt 0 view .LVU191
802 001a 2368 ldr r3, [r4]
803 001c DB68 ldr r3, [r3, #12]
804 .loc 1 271 13 view .LVU192
805 001e 0021 movs r1, #0
806 0020 2046 mov r0, r4
807 0022 9847 blx r3
808 .LVL66:
272:../libOLED/src/displayclass.cpp **** oledWrite (start);
809 .loc 1 272 3 is_stmt 1 view .LVU193
810 .loc 1 272 19 is_stmt 0 view .LVU194
811 0024 2368 ldr r3, [r4]
812 0026 DB68 ldr r3, [r3, #12]
813 .loc 1 272 13 view .LVU195
814 0028 3146 mov r1, r6
815 002a 2046 mov r0, r4
816 002c 9847 blx r3
817 .LVL67:
273:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
818 .loc 1 273 3 is_stmt 1 view .LVU196
819 .loc 1 273 18 is_stmt 0 view .LVU197
820 002e 2368 ldr r3, [r4]
821 0030 DB68 ldr r3, [r3, #12]
822 .loc 1 273 13 view .LVU198
823 0032 0021 movs r1, #0
824 0034 2046 mov r0, r4
825 0036 9847 blx r3
826 .LVL68:
274:../libOLED/src/displayclass.cpp **** oledWrite (stop);
827 .loc 1 274 3 is_stmt 1 view .LVU199
828 .loc 1 274 18 is_stmt 0 view .LVU200
829 0038 2368 ldr r3, [r4]
830 003a DB68 ldr r3, [r3, #12]
831 .loc 1 274 13 view .LVU201
832 003c 2946 mov r1, r5
833 003e 2046 mov r0, r4
834 0040 9847 blx r3
835 .LVL69:
275:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
836 .loc 1 275 3 is_stmt 1 view .LVU202
837 .loc 1 275 18 is_stmt 0 view .LVU203
838 0042 2368 ldr r3, [r4]
839 0044 DB68 ldr r3, [r3, #12]
840 .loc 1 275 13 view .LVU204
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 21
841 0046 0021 movs r1, #0
842 0048 2046 mov r0, r4
843 004a 9847 blx r3
844 .LVL70:
276:../libOLED/src/displayclass.cpp **** oledWrite (0XFF);
845 .loc 1 276 3 is_stmt 1 view .LVU205
846 .loc 1 276 18 is_stmt 0 view .LVU206
847 004c 2368 ldr r3, [r4]
848 004e DB68 ldr r3, [r3, #12]
849 .loc 1 276 13 view .LVU207
850 0050 FF21 movs r1, #255
851 0052 2046 mov r0, r4
852 0054 9847 blx r3
853 .LVL71:
277:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_ACTIVATE_SCROLL);
854 .loc 1 277 3 is_stmt 1 view .LVU208
855 .loc 1 277 37 is_stmt 0 view .LVU209
856 0056 2368 ldr r3, [r4]
857 0058 DB68 ldr r3, [r3, #12]
858 .loc 1 277 13 view .LVU210
859 005a 2F21 movs r1, #47
860 005c 2046 mov r0, r4
861 005e 9847 blx r3
862 .LVL72:
278:../libOLED/src/displayclass.cpp **** }
863 .loc 1 278 1 view .LVU211
864 0060 70BD pop {r4, r5, r6, pc}
865 .loc 1 278 1 view .LVU212
866 .cfi_endproc
867 .LFE48:
869 .section .text._ZN9display_t15startscrollleftEhh,"ax",%progbits
870 .align 1
871 .global _ZN9display_t15startscrollleftEhh
872 .syntax unified
873 .thumb
874 .thumb_func
875 .fpu softvfp
877 _ZN9display_t15startscrollleftEhh:
878 .LVL73:
879 .LFB49:
279:../libOLED/src/displayclass.cpp ****
280:../libOLED/src/displayclass.cpp **** // startscrollleft
281:../libOLED/src/displayclass.cpp **** // Activate a right handed scroll for rows start through stop
282:../libOLED/src/displayclass.cpp **** // Hint, the display is 16 rows tall. To scroll the whole display, run:
283:../libOLED/src/displayclass.cpp **** // display.scrollright(0x00, 0x0F)
284:../libOLED/src/displayclass.cpp **** void
285:../libOLED/src/displayclass.cpp **** display_t::startscrollleft (uint8_t start, uint8_t stop)
286:../libOLED/src/displayclass.cpp **** {
880 .loc 1 286 1 is_stmt 1 view -0
881 .cfi_startproc
882 @ args = 0, pretend = 0, frame = 0
883 @ frame_needed = 0, uses_anonymous_args = 0
884 .loc 1 286 1 is_stmt 0 view .LVU214
885 0000 70B5 push {r4, r5, r6, lr}
886 .LCFI9:
887 .cfi_def_cfa_offset 16
888 .cfi_offset 4, -16
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 22
889 .cfi_offset 5, -12
890 .cfi_offset 6, -8
891 .cfi_offset 14, -4
892 0002 0446 mov r4, r0
893 0004 0E46 mov r6, r1
894 0006 1546 mov r5, r2
287:../libOLED/src/displayclass.cpp **** oledSetCD (0);
895 .loc 1 287 3 is_stmt 1 view .LVU215
896 .loc 1 287 15 is_stmt 0 view .LVU216
897 0008 0368 ldr r3, [r0]
898 000a 9B68 ldr r3, [r3, #8]
899 .loc 1 287 13 view .LVU217
900 000c 0021 movs r1, #0
901 .LVL74:
902 .loc 1 287 13 view .LVU218
903 000e 9847 blx r3
904 .LVL75:
288:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_LEFT_HORIZONTAL_SCROLL);
905 .loc 1 288 3 is_stmt 1 view .LVU219
906 .loc 1 288 44 is_stmt 0 view .LVU220
907 0010 2368 ldr r3, [r4]
908 0012 DB68 ldr r3, [r3, #12]
909 .loc 1 288 13 view .LVU221
910 0014 2721 movs r1, #39
911 0016 2046 mov r0, r4
912 0018 9847 blx r3
913 .LVL76:
289:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
914 .loc 1 289 3 is_stmt 1 view .LVU222
915 .loc 1 289 18 is_stmt 0 view .LVU223
916 001a 2368 ldr r3, [r4]
917 001c DB68 ldr r3, [r3, #12]
918 .loc 1 289 13 view .LVU224
919 001e 0021 movs r1, #0
920 0020 2046 mov r0, r4
921 0022 9847 blx r3
922 .LVL77:
290:../libOLED/src/displayclass.cpp **** oledWrite (start);
923 .loc 1 290 3 is_stmt 1 view .LVU225
924 .loc 1 290 19 is_stmt 0 view .LVU226
925 0024 2368 ldr r3, [r4]
926 0026 DB68 ldr r3, [r3, #12]
927 .loc 1 290 13 view .LVU227
928 0028 3146 mov r1, r6
929 002a 2046 mov r0, r4
930 002c 9847 blx r3
931 .LVL78:
291:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
932 .loc 1 291 3 is_stmt 1 view .LVU228
933 .loc 1 291 18 is_stmt 0 view .LVU229
934 002e 2368 ldr r3, [r4]
935 0030 DB68 ldr r3, [r3, #12]
936 .loc 1 291 13 view .LVU230
937 0032 0021 movs r1, #0
938 0034 2046 mov r0, r4
939 0036 9847 blx r3
940 .LVL79:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 23
292:../libOLED/src/displayclass.cpp **** oledWrite (stop);
941 .loc 1 292 3 is_stmt 1 view .LVU231
942 .loc 1 292 18 is_stmt 0 view .LVU232
943 0038 2368 ldr r3, [r4]
944 003a DB68 ldr r3, [r3, #12]
945 .loc 1 292 13 view .LVU233
946 003c 2946 mov r1, r5
947 003e 2046 mov r0, r4
948 0040 9847 blx r3
949 .LVL80:
293:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
950 .loc 1 293 3 is_stmt 1 view .LVU234
951 .loc 1 293 18 is_stmt 0 view .LVU235
952 0042 2368 ldr r3, [r4]
953 0044 DB68 ldr r3, [r3, #12]
954 .loc 1 293 13 view .LVU236
955 0046 0021 movs r1, #0
956 0048 2046 mov r0, r4
957 004a 9847 blx r3
958 .LVL81:
294:../libOLED/src/displayclass.cpp **** oledWrite (0XFF);
959 .loc 1 294 3 is_stmt 1 view .LVU237
960 .loc 1 294 18 is_stmt 0 view .LVU238
961 004c 2368 ldr r3, [r4]
962 004e DB68 ldr r3, [r3, #12]
963 .loc 1 294 13 view .LVU239
964 0050 FF21 movs r1, #255
965 0052 2046 mov r0, r4
966 0054 9847 blx r3
967 .LVL82:
295:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_ACTIVATE_SCROLL);
968 .loc 1 295 3 is_stmt 1 view .LVU240
969 .loc 1 295 37 is_stmt 0 view .LVU241
970 0056 2368 ldr r3, [r4]
971 0058 DB68 ldr r3, [r3, #12]
972 .loc 1 295 13 view .LVU242
973 005a 2F21 movs r1, #47
974 005c 2046 mov r0, r4
975 005e 9847 blx r3
976 .LVL83:
296:../libOLED/src/displayclass.cpp **** }
977 .loc 1 296 1 view .LVU243
978 0060 70BD pop {r4, r5, r6, pc}
979 .loc 1 296 1 view .LVU244
980 .cfi_endproc
981 .LFE49:
983 .section .text._ZN9display_t20startscrolldiagrightEhh,"ax",%progbits
984 .align 1
985 .global _ZN9display_t20startscrolldiagrightEhh
986 .syntax unified
987 .thumb
988 .thumb_func
989 .fpu softvfp
991 _ZN9display_t20startscrolldiagrightEhh:
992 .LVL84:
993 .LFB50:
297:../libOLED/src/displayclass.cpp ****
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 24
298:../libOLED/src/displayclass.cpp **** // startscrolldiagright
299:../libOLED/src/displayclass.cpp **** // Activate a diagonal scroll for rows start through stop
300:../libOLED/src/displayclass.cpp **** // Hint, the display is 16 rows tall. To scroll the whole display, run:
301:../libOLED/src/displayclass.cpp **** // display.scrollright(0x00, 0x0F)
302:../libOLED/src/displayclass.cpp **** void
303:../libOLED/src/displayclass.cpp **** display_t::startscrolldiagright (uint8_t start, uint8_t stop)
304:../libOLED/src/displayclass.cpp **** {
994 .loc 1 304 1 is_stmt 1 view -0
995 .cfi_startproc
996 @ args = 0, pretend = 0, frame = 0
997 @ frame_needed = 0, uses_anonymous_args = 0
998 .loc 1 304 1 is_stmt 0 view .LVU246
999 0000 70B5 push {r4, r5, r6, lr}
1000 .LCFI10:
1001 .cfi_def_cfa_offset 16
1002 .cfi_offset 4, -16
1003 .cfi_offset 5, -12
1004 .cfi_offset 6, -8
1005 .cfi_offset 14, -4
1006 0002 0446 mov r4, r0
1007 0004 0E46 mov r6, r1
1008 0006 1546 mov r5, r2
305:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1009 .loc 1 305 3 is_stmt 1 view .LVU247
1010 .loc 1 305 15 is_stmt 0 view .LVU248
1011 0008 0368 ldr r3, [r0]
1012 000a 9B68 ldr r3, [r3, #8]
1013 .loc 1 305 13 view .LVU249
1014 000c 0021 movs r1, #0
1015 .LVL85:
1016 .loc 1 305 13 view .LVU250
1017 000e 9847 blx r3
1018 .LVL86:
306:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SET_VERTICAL_SCROLL_AREA);
1019 .loc 1 306 3 is_stmt 1 view .LVU251
1020 .loc 1 306 46 is_stmt 0 view .LVU252
1021 0010 2368 ldr r3, [r4]
1022 0012 DB68 ldr r3, [r3, #12]
1023 .loc 1 306 13 view .LVU253
1024 0014 A321 movs r1, #163
1025 0016 2046 mov r0, r4
1026 0018 9847 blx r3
1027 .LVL87:
307:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1028 .loc 1 307 3 is_stmt 1 view .LVU254
1029 .loc 1 307 18 is_stmt 0 view .LVU255
1030 001a 2368 ldr r3, [r4]
1031 001c DB68 ldr r3, [r3, #12]
1032 .loc 1 307 13 view .LVU256
1033 001e 0021 movs r1, #0
1034 0020 2046 mov r0, r4
1035 0022 9847 blx r3
1036 .LVL88:
308:../libOLED/src/displayclass.cpp **** oledWrite (m_height);
1037 .loc 1 308 3 is_stmt 1 view .LVU257
1038 .loc 1 308 22 is_stmt 0 view .LVU258
1039 0024 2368 ldr r3, [r4]
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 25
1040 0026 DB68 ldr r3, [r3, #12]
1041 .loc 1 308 13 view .LVU259
1042 0028 217A ldrb r1, [r4, #8] @ zero_extendqisi2
1043 002a 2046 mov r0, r4
1044 002c 9847 blx r3
1045 .LVL89:
309:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL);
1046 .loc 1 309 3 is_stmt 1 view .LVU260
1047 .loc 1 309 58 is_stmt 0 view .LVU261
1048 002e 2368 ldr r3, [r4]
1049 0030 DB68 ldr r3, [r3, #12]
1050 .loc 1 309 13 view .LVU262
1051 0032 2921 movs r1, #41
1052 0034 2046 mov r0, r4
1053 0036 9847 blx r3
1054 .LVL90:
310:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1055 .loc 1 310 3 is_stmt 1 view .LVU263
1056 .loc 1 310 18 is_stmt 0 view .LVU264
1057 0038 2368 ldr r3, [r4]
1058 003a DB68 ldr r3, [r3, #12]
1059 .loc 1 310 13 view .LVU265
1060 003c 0021 movs r1, #0
1061 003e 2046 mov r0, r4
1062 0040 9847 blx r3
1063 .LVL91:
311:../libOLED/src/displayclass.cpp **** oledWrite (start);
1064 .loc 1 311 3 is_stmt 1 view .LVU266
1065 .loc 1 311 19 is_stmt 0 view .LVU267
1066 0042 2368 ldr r3, [r4]
1067 0044 DB68 ldr r3, [r3, #12]
1068 .loc 1 311 13 view .LVU268
1069 0046 3146 mov r1, r6
1070 0048 2046 mov r0, r4
1071 004a 9847 blx r3
1072 .LVL92:
312:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1073 .loc 1 312 3 is_stmt 1 view .LVU269
1074 .loc 1 312 18 is_stmt 0 view .LVU270
1075 004c 2368 ldr r3, [r4]
1076 004e DB68 ldr r3, [r3, #12]
1077 .loc 1 312 13 view .LVU271
1078 0050 0021 movs r1, #0
1079 0052 2046 mov r0, r4
1080 0054 9847 blx r3
1081 .LVL93:
313:../libOLED/src/displayclass.cpp **** oledWrite (stop);
1082 .loc 1 313 3 is_stmt 1 view .LVU272
1083 .loc 1 313 18 is_stmt 0 view .LVU273
1084 0056 2368 ldr r3, [r4]
1085 0058 DB68 ldr r3, [r3, #12]
1086 .loc 1 313 13 view .LVU274
1087 005a 2946 mov r1, r5
1088 005c 2046 mov r0, r4
1089 005e 9847 blx r3
1090 .LVL94:
314:../libOLED/src/displayclass.cpp **** oledWrite (0X01);
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 26
1091 .loc 1 314 3 is_stmt 1 view .LVU275
1092 .loc 1 314 18 is_stmt 0 view .LVU276
1093 0060 2368 ldr r3, [r4]
1094 0062 DB68 ldr r3, [r3, #12]
1095 .loc 1 314 13 view .LVU277
1096 0064 0121 movs r1, #1
1097 0066 2046 mov r0, r4
1098 0068 9847 blx r3
1099 .LVL95:
315:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_ACTIVATE_SCROLL);
1100 .loc 1 315 3 is_stmt 1 view .LVU278
1101 .loc 1 315 37 is_stmt 0 view .LVU279
1102 006a 2368 ldr r3, [r4]
1103 006c DB68 ldr r3, [r3, #12]
1104 .loc 1 315 13 view .LVU280
1105 006e 2F21 movs r1, #47
1106 0070 2046 mov r0, r4
1107 0072 9847 blx r3
1108 .LVL96:
316:../libOLED/src/displayclass.cpp **** }
1109 .loc 1 316 1 view .LVU281
1110 0074 70BD pop {r4, r5, r6, pc}
1111 .loc 1 316 1 view .LVU282
1112 .cfi_endproc
1113 .LFE50:
1115 .section .text._ZN9display_t19startscrolldiagleftEhh,"ax",%progbits
1116 .align 1
1117 .global _ZN9display_t19startscrolldiagleftEhh
1118 .syntax unified
1119 .thumb
1120 .thumb_func
1121 .fpu softvfp
1123 _ZN9display_t19startscrolldiagleftEhh:
1124 .LVL97:
1125 .LFB51:
317:../libOLED/src/displayclass.cpp ****
318:../libOLED/src/displayclass.cpp **** // startscrolldiagleft
319:../libOLED/src/displayclass.cpp **** // Activate a diagonal scroll for rows start through stop
320:../libOLED/src/displayclass.cpp **** // Hint, the display is 16 rows tall. To scroll the whole display, run:
321:../libOLED/src/displayclass.cpp **** // display.scrollright(0x00, 0x0F)
322:../libOLED/src/displayclass.cpp **** void
323:../libOLED/src/displayclass.cpp **** display_t::startscrolldiagleft (uint8_t start, uint8_t stop)
324:../libOLED/src/displayclass.cpp **** {
1126 .loc 1 324 1 is_stmt 1 view -0
1127 .cfi_startproc
1128 @ args = 0, pretend = 0, frame = 0
1129 @ frame_needed = 0, uses_anonymous_args = 0
1130 .loc 1 324 1 is_stmt 0 view .LVU284
1131 0000 70B5 push {r4, r5, r6, lr}
1132 .LCFI11:
1133 .cfi_def_cfa_offset 16
1134 .cfi_offset 4, -16
1135 .cfi_offset 5, -12
1136 .cfi_offset 6, -8
1137 .cfi_offset 14, -4
1138 0002 0446 mov r4, r0
1139 0004 0E46 mov r6, r1
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 27
1140 0006 1546 mov r5, r2
325:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1141 .loc 1 325 3 is_stmt 1 view .LVU285
1142 .loc 1 325 15 is_stmt 0 view .LVU286
1143 0008 0368 ldr r3, [r0]
1144 000a 9B68 ldr r3, [r3, #8]
1145 .loc 1 325 13 view .LVU287
1146 000c 0021 movs r1, #0
1147 .LVL98:
1148 .loc 1 325 13 view .LVU288
1149 000e 9847 blx r3
1150 .LVL99:
326:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SET_VERTICAL_SCROLL_AREA);
1151 .loc 1 326 3 is_stmt 1 view .LVU289
1152 .loc 1 326 46 is_stmt 0 view .LVU290
1153 0010 2368 ldr r3, [r4]
1154 0012 DB68 ldr r3, [r3, #12]
1155 .loc 1 326 13 view .LVU291
1156 0014 A321 movs r1, #163
1157 0016 2046 mov r0, r4
1158 0018 9847 blx r3
1159 .LVL100:
327:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1160 .loc 1 327 3 is_stmt 1 view .LVU292
1161 .loc 1 327 18 is_stmt 0 view .LVU293
1162 001a 2368 ldr r3, [r4]
1163 001c DB68 ldr r3, [r3, #12]
1164 .loc 1 327 13 view .LVU294
1165 001e 0021 movs r1, #0
1166 0020 2046 mov r0, r4
1167 0022 9847 blx r3
1168 .LVL101:
328:../libOLED/src/displayclass.cpp **** oledWrite (m_height);
1169 .loc 1 328 3 is_stmt 1 view .LVU295
1170 .loc 1 328 22 is_stmt 0 view .LVU296
1171 0024 2368 ldr r3, [r4]
1172 0026 DB68 ldr r3, [r3, #12]
1173 .loc 1 328 13 view .LVU297
1174 0028 217A ldrb r1, [r4, #8] @ zero_extendqisi2
1175 002a 2046 mov r0, r4
1176 002c 9847 blx r3
1177 .LVL102:
329:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL);
1178 .loc 1 329 3 is_stmt 1 view .LVU298
1179 .loc 1 329 57 is_stmt 0 view .LVU299
1180 002e 2368 ldr r3, [r4]
1181 0030 DB68 ldr r3, [r3, #12]
1182 .loc 1 329 13 view .LVU300
1183 0032 2A21 movs r1, #42
1184 0034 2046 mov r0, r4
1185 0036 9847 blx r3
1186 .LVL103:
330:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1187 .loc 1 330 3 is_stmt 1 view .LVU301
1188 .loc 1 330 18 is_stmt 0 view .LVU302
1189 0038 2368 ldr r3, [r4]
1190 003a DB68 ldr r3, [r3, #12]
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 28
1191 .loc 1 330 13 view .LVU303
1192 003c 0021 movs r1, #0
1193 003e 2046 mov r0, r4
1194 0040 9847 blx r3
1195 .LVL104:
331:../libOLED/src/displayclass.cpp **** oledWrite (start);
1196 .loc 1 331 3 is_stmt 1 view .LVU304
1197 .loc 1 331 19 is_stmt 0 view .LVU305
1198 0042 2368 ldr r3, [r4]
1199 0044 DB68 ldr r3, [r3, #12]
1200 .loc 1 331 13 view .LVU306
1201 0046 3146 mov r1, r6
1202 0048 2046 mov r0, r4
1203 004a 9847 blx r3
1204 .LVL105:
332:../libOLED/src/displayclass.cpp **** oledWrite (0X00);
1205 .loc 1 332 3 is_stmt 1 view .LVU307
1206 .loc 1 332 18 is_stmt 0 view .LVU308
1207 004c 2368 ldr r3, [r4]
1208 004e DB68 ldr r3, [r3, #12]
1209 .loc 1 332 13 view .LVU309
1210 0050 0021 movs r1, #0
1211 0052 2046 mov r0, r4
1212 0054 9847 blx r3
1213 .LVL106:
333:../libOLED/src/displayclass.cpp **** oledWrite (stop);
1214 .loc 1 333 3 is_stmt 1 view .LVU310
1215 .loc 1 333 18 is_stmt 0 view .LVU311
1216 0056 2368 ldr r3, [r4]
1217 0058 DB68 ldr r3, [r3, #12]
1218 .loc 1 333 13 view .LVU312
1219 005a 2946 mov r1, r5
1220 005c 2046 mov r0, r4
1221 005e 9847 blx r3
1222 .LVL107:
334:../libOLED/src/displayclass.cpp **** oledWrite (0X01);
1223 .loc 1 334 3 is_stmt 1 view .LVU313
1224 .loc 1 334 18 is_stmt 0 view .LVU314
1225 0060 2368 ldr r3, [r4]
1226 0062 DB68 ldr r3, [r3, #12]
1227 .loc 1 334 13 view .LVU315
1228 0064 0121 movs r1, #1
1229 0066 2046 mov r0, r4
1230 0068 9847 blx r3
1231 .LVL108:
335:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_ACTIVATE_SCROLL);
1232 .loc 1 335 3 is_stmt 1 view .LVU316
1233 .loc 1 335 37 is_stmt 0 view .LVU317
1234 006a 2368 ldr r3, [r4]
1235 006c DB68 ldr r3, [r3, #12]
1236 .loc 1 335 13 view .LVU318
1237 006e 2F21 movs r1, #47
1238 0070 2046 mov r0, r4
1239 0072 9847 blx r3
1240 .LVL109:
336:../libOLED/src/displayclass.cpp **** }
1241 .loc 1 336 1 view .LVU319
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 29
1242 0074 70BD pop {r4, r5, r6, pc}
1243 .loc 1 336 1 view .LVU320
1244 .cfi_endproc
1245 .LFE51:
1247 .section .text._ZN9display_t10stopscrollEv,"ax",%progbits
1248 .align 1
1249 .global _ZN9display_t10stopscrollEv
1250 .syntax unified
1251 .thumb
1252 .thumb_func
1253 .fpu softvfp
1255 _ZN9display_t10stopscrollEv:
1256 .LVL110:
1257 .LFB52:
337:../libOLED/src/displayclass.cpp ****
338:../libOLED/src/displayclass.cpp **** void
339:../libOLED/src/displayclass.cpp **** display_t::stopscroll (void)
340:../libOLED/src/displayclass.cpp **** {
1258 .loc 1 340 1 is_stmt 1 view -0
1259 .cfi_startproc
1260 @ args = 0, pretend = 0, frame = 0
1261 @ frame_needed = 0, uses_anonymous_args = 0
1262 .loc 1 340 1 is_stmt 0 view .LVU322
1263 0000 10B5 push {r4, lr}
1264 .LCFI12:
1265 .cfi_def_cfa_offset 8
1266 .cfi_offset 4, -8
1267 .cfi_offset 14, -4
1268 0002 0446 mov r4, r0
341:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1269 .loc 1 341 3 is_stmt 1 view .LVU323
1270 .loc 1 341 15 is_stmt 0 view .LVU324
1271 0004 0368 ldr r3, [r0]
1272 0006 9B68 ldr r3, [r3, #8]
1273 .loc 1 341 13 view .LVU325
1274 0008 0021 movs r1, #0
1275 000a 9847 blx r3
1276 .LVL111:
342:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DEACTIVATE_SCROLL);
1277 .loc 1 342 3 is_stmt 1 view .LVU326
1278 .loc 1 342 39 is_stmt 0 view .LVU327
1279 000c 2368 ldr r3, [r4]
1280 000e DB68 ldr r3, [r3, #12]
1281 .loc 1 342 13 view .LVU328
1282 0010 2E21 movs r1, #46
1283 0012 2046 mov r0, r4
1284 0014 9847 blx r3
1285 .LVL112:
343:../libOLED/src/displayclass.cpp **** }
1286 .loc 1 343 1 view .LVU329
1287 0016 10BD pop {r4, pc}
1288 .loc 1 343 1 view .LVU330
1289 .cfi_endproc
1290 .LFE52:
1292 .section .text._ZN9display_t3dimEh,"ax",%progbits
1293 .align 1
1294 .global _ZN9display_t3dimEh
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 30
1295 .syntax unified
1296 .thumb
1297 .thumb_func
1298 .fpu softvfp
1300 _ZN9display_t3dimEh:
1301 .LVL113:
1302 .LFB53:
344:../libOLED/src/displayclass.cpp ****
345:../libOLED/src/displayclass.cpp **** // Dim the display
346:../libOLED/src/displayclass.cpp **** // dim = true: display is dimmed
347:../libOLED/src/displayclass.cpp **** // dim = false: display is normal
348:../libOLED/src/displayclass.cpp **** void
349:../libOLED/src/displayclass.cpp **** display_t::dim (uint8_t contrast)
350:../libOLED/src/displayclass.cpp **** {
1303 .loc 1 350 1 is_stmt 1 view -0
1304 .cfi_startproc
1305 @ args = 0, pretend = 0, frame = 0
1306 @ frame_needed = 0, uses_anonymous_args = 0
1307 .loc 1 350 1 is_stmt 0 view .LVU332
1308 0000 38B5 push {r3, r4, r5, lr}
1309 .LCFI13:
1310 .cfi_def_cfa_offset 16
1311 .cfi_offset 3, -16
1312 .cfi_offset 4, -12
1313 .cfi_offset 5, -8
1314 .cfi_offset 14, -4
1315 0002 0446 mov r4, r0
1316 0004 0D46 mov r5, r1
351:../libOLED/src/displayclass.cpp ****
352:../libOLED/src/displayclass.cpp **** // the range of contrast to too small to be really useful
353:../libOLED/src/displayclass.cpp **** // it is useful to dim the display
354:../libOLED/src/displayclass.cpp ****
355:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1317 .loc 1 355 3 is_stmt 1 view .LVU333
1318 .loc 1 355 15 is_stmt 0 view .LVU334
1319 0006 0368 ldr r3, [r0]
1320 0008 9B68 ldr r3, [r3, #8]
1321 .loc 1 355 13 view .LVU335
1322 000a 0021 movs r1, #0
1323 .LVL114:
1324 .loc 1 355 13 view .LVU336
1325 000c 9847 blx r3
1326 .LVL115:
356:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST);
1327 .loc 1 356 3 is_stmt 1 view .LVU337
1328 .loc 1 356 33 is_stmt 0 view .LVU338
1329 000e 2368 ldr r3, [r4]
1330 0010 DB68 ldr r3, [r3, #12]
1331 .loc 1 356 13 view .LVU339
1332 0012 8121 movs r1, #129
1333 0014 2046 mov r0, r4
1334 0016 9847 blx r3
1335 .LVL116:
357:../libOLED/src/displayclass.cpp **** oledWrite (contrast);
1336 .loc 1 357 3 is_stmt 1 view .LVU340
1337 .loc 1 357 22 is_stmt 0 view .LVU341
1338 0018 2368 ldr r3, [r4]
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 31
1339 001a DB68 ldr r3, [r3, #12]
1340 .loc 1 357 13 view .LVU342
1341 001c 2946 mov r1, r5
1342 001e 2046 mov r0, r4
1343 0020 9847 blx r3
1344 .LVL117:
358:../libOLED/src/displayclass.cpp **** }
1345 .loc 1 358 1 view .LVU343
1346 0022 38BD pop {r3, r4, r5, pc}
1347 .loc 1 358 1 view .LVU344
1348 .cfi_endproc
1349 .LFE53:
1351 .section .text._ZN9display_t7displayEv,"ax",%progbits
1352 .align 1
1353 .global _ZN9display_t7displayEv
1354 .syntax unified
1355 .thumb
1356 .thumb_func
1357 .fpu softvfp
1359 _ZN9display_t7displayEv:
1360 .LVL118:
1361 .LFB54:
359:../libOLED/src/displayclass.cpp ****
360:../libOLED/src/displayclass.cpp **** void
361:../libOLED/src/displayclass.cpp **** display_t::display (void)
362:../libOLED/src/displayclass.cpp **** {
1362 .loc 1 362 1 is_stmt 1 view -0
1363 .cfi_startproc
1364 @ args = 0, pretend = 0, frame = 0
1365 @ frame_needed = 0, uses_anonymous_args = 0
1366 .loc 1 362 1 is_stmt 0 view .LVU346
1367 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
1368 .LCFI14:
1369 .cfi_def_cfa_offset 24
1370 .cfi_offset 3, -24
1371 .cfi_offset 4, -20
1372 .cfi_offset 5, -16
1373 .cfi_offset 6, -12
1374 .cfi_offset 7, -8
1375 .cfi_offset 14, -4
1376 0002 0446 mov r4, r0
363:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1377 .loc 1 363 3 is_stmt 1 view .LVU347
1378 .loc 1 363 15 is_stmt 0 view .LVU348
1379 0004 0368 ldr r3, [r0]
1380 0006 9B68 ldr r3, [r3, #8]
1381 .loc 1 363 13 view .LVU349
1382 0008 0021 movs r1, #0
1383 000a 9847 blx r3
1384 .LVL119:
364:../libOLED/src/displayclass.cpp **** // select entire display as window to write into
365:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_COLUMNADDR);
1385 .loc 1 365 3 is_stmt 1 view .LVU350
1386 .loc 1 365 32 is_stmt 0 view .LVU351
1387 000c 2368 ldr r3, [r4]
1388 000e DB68 ldr r3, [r3, #12]
1389 .loc 1 365 13 view .LVU352
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 32
1390 0010 2121 movs r1, #33
1391 0012 2046 mov r0, r4
1392 0014 9847 blx r3
1393 .LVL120:
366:../libOLED/src/displayclass.cpp **** oledWrite (0); // Column start address (0 = reset)
1394 .loc 1 366 3 is_stmt 1 view .LVU353
1395 .loc 1 366 15 is_stmt 0 view .LVU354
1396 0016 2368 ldr r3, [r4]
1397 0018 DB68 ldr r3, [r3, #12]
1398 .loc 1 366 13 view .LVU355
1399 001a 0021 movs r1, #0
1400 001c 2046 mov r0, r4
1401 001e 9847 blx r3
1402 .LVL121:
367:../libOLED/src/displayclass.cpp **** oledWrite (m_ramwidth - 1); // Column end address (127 = reset)
1403 .loc 1 367 3 is_stmt 1 view .LVU356
1404 .loc 1 367 28 is_stmt 0 view .LVU357
1405 0020 2368 ldr r3, [r4]
1406 0022 DB68 ldr r3, [r3, #12]
1407 .loc 1 367 14 view .LVU358
1408 0024 E168 ldr r1, [r4, #12]
1409 .loc 1 367 13 view .LVU359
1410 0026 0139 subs r1, r1, #1
1411 0028 C9B2 uxtb r1, r1
1412 002a 2046 mov r0, r4
1413 002c 9847 blx r3
1414 .LVL122:
368:../libOLED/src/displayclass.cpp ****
369:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_PAGEADDR);
1415 .loc 1 369 3 is_stmt 1 view .LVU360
1416 .loc 1 369 30 is_stmt 0 view .LVU361
1417 002e 2368 ldr r3, [r4]
1418 0030 DB68 ldr r3, [r3, #12]
1419 .loc 1 369 13 view .LVU362
1420 0032 2221 movs r1, #34
1421 0034 2046 mov r0, r4
1422 0036 9847 blx r3
1423 .LVL123:
370:../libOLED/src/displayclass.cpp **** oledWrite (0); // Page start address (0 = reset)
1424 .loc 1 370 3 is_stmt 1 view .LVU363
1425 .loc 1 370 15 is_stmt 0 view .LVU364
1426 0038 2368 ldr r3, [r4]
1427 003a DB68 ldr r3, [r3, #12]
1428 .loc 1 370 13 view .LVU365
1429 003c 0021 movs r1, #0
1430 003e 2046 mov r0, r4
1431 0040 9847 blx r3
1432 .LVL124:
371:../libOLED/src/displayclass.cpp **** oledWrite ((m_height == 64) ? 7 : 3); // Page end address
1433 .loc 1 371 3 is_stmt 1 view .LVU366
1434 .loc 1 371 38 is_stmt 0 view .LVU367
1435 0042 2368 ldr r3, [r4]
1436 0044 DB68 ldr r3, [r3, #12]
1437 .loc 1 371 15 view .LVU368
1438 0046 A268 ldr r2, [r4, #8]
1439 .loc 1 371 13 view .LVU369
1440 0048 402A cmp r2, #64
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 33
1441 004a 08D0 beq .L76
1442 004c 0321 movs r1, #3
1443 .L68:
1444 .loc 1 371 13 discriminator 4 view .LVU370
1445 004e 2046 mov r0, r4
1446 0050 9847 blx r3
1447 .LVL125:
372:../libOLED/src/displayclass.cpp ****
373:../libOLED/src/displayclass.cpp **** int row;
1448 .loc 1 373 3 is_stmt 1 discriminator 4 view .LVU371
374:../libOLED/src/displayclass.cpp ****
375:../libOLED/src/displayclass.cpp **** int col = m_ramwidth == 132 ? 2 : 0;
1449 .loc 1 375 3 discriminator 4 view .LVU372
1450 .loc 1 375 13 is_stmt 0 discriminator 4 view .LVU373
1451 0052 E368 ldr r3, [r4, #12]
1452 .loc 1 375 31 discriminator 4 view .LVU374
1453 0054 842B cmp r3, #132
1454 0056 04D0 beq .L77
1455 .loc 1 375 31 view .LVU375
1456 0058 0027 movs r7, #0
1457 .L69:
1458 .LVL126:
376:../libOLED/src/displayclass.cpp **** for (row = 0; row < m_height / 8; row++)
1459 .loc 1 376 3 is_stmt 1 discriminator 4 view .LVU376
1460 .loc 1 376 12 is_stmt 0 discriminator 4 view .LVU377
1461 005a 0025 movs r5, #0
1462 005c 2BE0 b .L72
1463 .LVL127:
1464 .L76:
371:../libOLED/src/displayclass.cpp ****
1465 .loc 1 371 13 view .LVU378
1466 005e 0721 movs r1, #7
1467 0060 F5E7 b .L68
1468 .L77:
375:../libOLED/src/displayclass.cpp **** for (row = 0; row < m_height / 8; row++)
1469 .loc 1 375 31 view .LVU379
1470 0062 0227 movs r7, #2
1471 0064 F9E7 b .L69
1472 .LVL128:
1473 .L70:
1474 .loc 1 376 21 discriminator 3 view .LVU380
1475 0066 B5EBE30F cmp r5, r3, asr #3
1476 006a 29DA bge .L67
377:../libOLED/src/displayclass.cpp **** {
378:../libOLED/src/displayclass.cpp **** oledSetCD (0);
1477 .loc 1 378 7 is_stmt 1 discriminator 2 view .LVU381
1478 .loc 1 378 19 is_stmt 0 discriminator 2 view .LVU382
1479 006c 2368 ldr r3, [r4]
1480 006e 9B68 ldr r3, [r3, #8]
1481 .loc 1 378 17 discriminator 2 view .LVU383
1482 0070 0021 movs r1, #0
1483 0072 2046 mov r0, r4
1484 0074 9847 blx r3
1485 .LVL129:
379:../libOLED/src/displayclass.cpp **** // set the cursor to
380:../libOLED/src/displayclass.cpp **** oledWrite (0xB0 + row); //set page address
1486 .loc 1 380 7 is_stmt 1 discriminator 2 view .LVU384
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 34
1487 .loc 1 380 28 is_stmt 0 discriminator 2 view .LVU385
1488 0076 2368 ldr r3, [r4]
1489 0078 DB68 ldr r3, [r3, #12]
1490 .loc 1 380 17 discriminator 2 view .LVU386
1491 007a A5F15001 sub r1, r5, #80
1492 007e C9B2 uxtb r1, r1
1493 0080 2046 mov r0, r4
1494 0082 9847 blx r3
1495 .LVL130:
381:../libOLED/src/displayclass.cpp **** oledWrite (col & 0xf); //set lower column address
1496 .loc 1 381 7 is_stmt 1 discriminator 2 view .LVU387
1497 .loc 1 381 27 is_stmt 0 discriminator 2 view .LVU388
1498 0084 2368 ldr r3, [r4]
1499 0086 DB68 ldr r3, [r3, #12]
1500 .loc 1 381 17 discriminator 2 view .LVU389
1501 0088 3946 mov r1, r7
1502 008a 2046 mov r0, r4
1503 008c 9847 blx r3
1504 .LVL131:
382:../libOLED/src/displayclass.cpp **** oledWrite (0x10 | (col >> 4)); //set higher column address
1505 .loc 1 382 7 is_stmt 1 discriminator 2 view .LVU390
1506 .loc 1 382 35 is_stmt 0 discriminator 2 view .LVU391
1507 008e 2368 ldr r3, [r4]
1508 0090 DB68 ldr r3, [r3, #12]
1509 .loc 1 382 17 discriminator 2 view .LVU392
1510 0092 1021 movs r1, #16
1511 0094 2046 mov r0, r4
1512 0096 9847 blx r3
1513 .LVL132:
383:../libOLED/src/displayclass.cpp ****
384:../libOLED/src/displayclass.cpp **** oledSetCD (1);
1514 .loc 1 384 7 is_stmt 1 discriminator 2 view .LVU393
1515 .loc 1 384 19 is_stmt 0 discriminator 2 view .LVU394
1516 0098 2368 ldr r3, [r4]
1517 009a 9B68 ldr r3, [r3, #8]
1518 .loc 1 384 17 discriminator 2 view .LVU395
1519 009c 0121 movs r1, #1
1520 009e 2046 mov r0, r4
1521 00a0 9847 blx r3
1522 .LVL133:
385:../libOLED/src/displayclass.cpp **** oledWrite (m_data + row * m_width, m_width);
1523 .loc 1 385 7 is_stmt 1 discriminator 2 view .LVU396
1524 .loc 1 385 49 is_stmt 0 discriminator 2 view .LVU397
1525 00a2 2368 ldr r3, [r4]
1526 00a4 5E69 ldr r6, [r3, #20]
1527 .loc 1 385 18 discriminator 2 view .LVU398
1528 00a6 216A ldr r1, [r4, #32]
1529 .loc 1 385 33 discriminator 2 view .LVU399
1530 00a8 6368 ldr r3, [r4, #4]
1531 .loc 1 385 17 discriminator 2 view .LVU400
1532 00aa DAB2 uxtb r2, r3
1533 00ac 05FB0311 mla r1, r5, r3, r1
1534 00b0 2046 mov r0, r4
1535 00b2 B047 blx r6
1536 .LVL134:
376:../libOLED/src/displayclass.cpp **** {
1537 .loc 1 376 3 discriminator 2 view .LVU401
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 35
1538 00b4 0135 adds r5, r5, #1
1539 .LVL135:
1540 .L72:
376:../libOLED/src/displayclass.cpp **** {
1541 .loc 1 376 23 discriminator 3 view .LVU402
1542 00b6 A368 ldr r3, [r4, #8]
376:../libOLED/src/displayclass.cpp **** {
1543 .loc 1 376 32 discriminator 3 view .LVU403
1544 00b8 002B cmp r3, #0
1545 00ba D4DA bge .L70
1546 00bc 0733 adds r3, r3, #7
1547 00be D2E7 b .L70
1548 .L67:
386:../libOLED/src/displayclass.cpp ****
387:../libOLED/src/displayclass.cpp **** }
388:../libOLED/src/displayclass.cpp ****
389:../libOLED/src/displayclass.cpp **** }
1549 .loc 1 389 1 view .LVU404
1550 00c0 F8BD pop {r3, r4, r5, r6, r7, pc}
1551 .loc 1 389 1 view .LVU405
1552 .cfi_endproc
1553 .LFE54:
1555 .section .text._ZN9display_t12clearDisplayE8colour_t,"ax",%progbits
1556 .align 1
1557 .global _ZN9display_t12clearDisplayE8colour_t
1558 .syntax unified
1559 .thumb
1560 .thumb_func
1561 .fpu softvfp
1563 _ZN9display_t12clearDisplayE8colour_t:
1564 .LVL136:
1565 .LFB55:
390:../libOLED/src/displayclass.cpp ****
391:../libOLED/src/displayclass.cpp **** // clear everything
392:../libOLED/src/displayclass.cpp **** void
393:../libOLED/src/displayclass.cpp **** display_t::clearDisplay (colour_t colour)
394:../libOLED/src/displayclass.cpp **** {
1566 .loc 1 394 1 is_stmt 1 view -0
1567 .cfi_startproc
1568 @ args = 0, pretend = 0, frame = 0
1569 @ frame_needed = 0, uses_anonymous_args = 0
1570 .loc 1 394 1 is_stmt 0 view .LVU407
1571 0000 08B5 push {r3, lr}
1572 .LCFI15:
1573 .cfi_def_cfa_offset 8
1574 .cfi_offset 3, -8
1575 .cfi_offset 14, -4
395:../libOLED/src/displayclass.cpp **** switch (colour)
1576 .loc 1 395 3 is_stmt 1 view .LVU408
1577 .LBB14:
1578 0002 0329 cmp r1, #3
1579 0004 0FD8 bhi .L78
1580 0006 DFE801F0 tbb [pc, r1]
1581 .L81:
1582 000a 11 .byte (.L83-.L81)/2
1583 000b 02 .byte (.L82-.L81)/2
1584 000c 02 .byte (.L82-.L81)/2
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 36
1585 000d 20 .byte (.L87-.L81)/2
1586 .p2align 1
1587 .L82:
1588 .LBB15:
396:../libOLED/src/displayclass.cpp **** {
397:../libOLED/src/displayclass.cpp **** case WHITE:
1589 .loc 1 397 5 view .LVU409
398:../libOLED/src/displayclass.cpp **** case OVERLAY:
1590 .loc 1 398 5 view .LVU410
399:../libOLED/src/displayclass.cpp **** memset (m_data, 255, dataSize (m_width, m_height));
1591 .loc 1 399 7 view .LVU411
1592 .loc 1 399 15 is_stmt 0 view .LVU412
1593 000e 036A ldr r3, [r0, #32]
1594 .loc 1 399 38 view .LVU413
1595 0010 4168 ldr r1, [r0, #4]
1596 .LVL137:
1597 .loc 1 399 47 view .LVU414
1598 0012 8268 ldr r2, [r0, #8]
1599 .LVL138:
1600 .LBB16:
1601 .LBI16:
1602 .file 2 "../libOLED/inc/libOLED/displayclass.H"
1:../libOLED/inc/libOLED/displayclass.H **** /*
2:../libOLED/inc/libOLED/displayclass.H **** * displayclass.H
3:../libOLED/inc/libOLED/displayclass.H **** *
4:../libOLED/inc/libOLED/displayclass.H **** * Created on: 31 Oct 2020
5:../libOLED/inc/libOLED/displayclass.H **** * Author: mike
6:../libOLED/inc/libOLED/displayclass.H **** */
7:../libOLED/inc/libOLED/displayclass.H ****
8:../libOLED/inc/libOLED/displayclass.H **** #pragma once
9:../libOLED/inc/libOLED/displayclass.H **** #include <cstdint>
10:../libOLED/inc/libOLED/displayclass.H **** #include "libOLED/fontclass.H"
11:../libOLED/inc/libOLED/displayclass.H ****
12:../libOLED/inc/libOLED/displayclass.H **** inline int constexpr
13:../libOLED/inc/libOLED/displayclass.H **** dataSize (int const width, int const height)
1603 .loc 2 13 1 is_stmt 1 view .LVU415
1604 .LBB17:
14:../libOLED/inc/libOLED/displayclass.H **** {
15:../libOLED/inc/libOLED/displayclass.H **** return (width * height / 8);
1605 .loc 2 15 3 view .LVU416
1606 .loc 2 15 17 is_stmt 0 view .LVU417
1607 0014 02FB01F2 mul r2, r2, r1
1608 .LVL139:
1609 .loc 2 15 29 view .LVU418
1610 0018 002A cmp r2, #0
1611 001a 05DB blt .L89
1612 .L84:
1613 .LVL140:
1614 .loc 2 15 29 view .LVU419
1615 .LBE17:
1616 .LBE16:
1617 .loc 1 399 14 view .LVU420
1618 001c D210 asrs r2, r2, #3
1619 001e FF21 movs r1, #255
1620 0020 1846 mov r0, r3
1621 .LVL141:
1622 .loc 1 399 14 view .LVU421
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 37
1623 0022 FFF7FEFF bl memset
1624 .LVL142:
400:../libOLED/src/displayclass.cpp **** break;
1625 .loc 1 400 7 is_stmt 1 view .LVU422
1626 .L78:
1627 .loc 1 400 7 is_stmt 0 view .LVU423
1628 .LBE15:
1629 .LBE14:
401:../libOLED/src/displayclass.cpp **** case BLACK:
402:../libOLED/src/displayclass.cpp **** memset (m_data, 0, dataSize (m_width, m_height));
403:../libOLED/src/displayclass.cpp **** break;
404:../libOLED/src/displayclass.cpp **** case INVERT:
405:../libOLED/src/displayclass.cpp **** for (size_t i = 0; i < dataSize (m_width, m_height); i++)
406:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
407:../libOLED/src/displayclass.cpp **** break;
408:../libOLED/src/displayclass.cpp **** }
409:../libOLED/src/displayclass.cpp ****
410:../libOLED/src/displayclass.cpp **** }
1630 .loc 1 410 1 view .LVU424
1631 0026 08BD pop {r3, pc}
1632 .LVL143:
1633 .L89:
1634 .LBB28:
1635 .LBB27:
1636 .LBB19:
1637 .LBB18:
1638 .loc 2 15 29 view .LVU425
1639 0028 0732 adds r2, r2, #7
1640 002a F7E7 b .L84
1641 .LVL144:
1642 .L83:
1643 .loc 2 15 29 view .LVU426
1644 .LBE18:
1645 .LBE19:
401:../libOLED/src/displayclass.cpp **** case BLACK:
1646 .loc 1 401 5 is_stmt 1 view .LVU427
402:../libOLED/src/displayclass.cpp **** break;
1647 .loc 1 402 7 view .LVU428
402:../libOLED/src/displayclass.cpp **** break;
1648 .loc 1 402 15 is_stmt 0 view .LVU429
1649 002c 036A ldr r3, [r0, #32]
402:../libOLED/src/displayclass.cpp **** break;
1650 .loc 1 402 36 view .LVU430
1651 002e 4168 ldr r1, [r0, #4]
1652 .LVL145:
402:../libOLED/src/displayclass.cpp **** break;
1653 .loc 1 402 45 view .LVU431
1654 0030 8268 ldr r2, [r0, #8]
1655 .LVL146:
1656 .LBB20:
1657 .LBI20:
13:../libOLED/inc/libOLED/displayclass.H **** {
1658 .loc 2 13 1 is_stmt 1 view .LVU432
1659 .LBB21:
1660 .loc 2 15 3 view .LVU433
1661 .loc 2 15 17 is_stmt 0 view .LVU434
1662 0032 02FB01F2 mul r2, r2, r1
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 38
1663 .LVL147:
1664 .loc 2 15 29 view .LVU435
1665 0036 002A cmp r2, #0
1666 0038 05DB blt .L90
1667 .L85:
1668 .LVL148:
1669 .loc 2 15 29 view .LVU436
1670 .LBE21:
1671 .LBE20:
402:../libOLED/src/displayclass.cpp **** break;
1672 .loc 1 402 14 view .LVU437
1673 003a D210 asrs r2, r2, #3
1674 003c 0021 movs r1, #0
1675 003e 1846 mov r0, r3
1676 .LVL149:
402:../libOLED/src/displayclass.cpp **** break;
1677 .loc 1 402 14 view .LVU438
1678 0040 FFF7FEFF bl memset
1679 .LVL150:
403:../libOLED/src/displayclass.cpp **** case INVERT:
1680 .loc 1 403 7 is_stmt 1 view .LVU439
1681 0044 EFE7 b .L78
1682 .LVL151:
1683 .L90:
1684 .LBB23:
1685 .LBB22:
1686 .loc 2 15 29 is_stmt 0 view .LVU440
1687 0046 0732 adds r2, r2, #7
1688 0048 F7E7 b .L85
1689 .LVL152:
1690 .L87:
1691 .loc 2 15 29 view .LVU441
1692 .LBE22:
1693 .LBE23:
1694 .LBB24:
405:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
1695 .loc 1 405 19 view .LVU442
1696 004a 0022 movs r2, #0
1697 004c 07E0 b .L80
1698 .LVL153:
1699 .L86:
405:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
1700 .loc 1 405 28 discriminator 3 view .LVU443
1701 004e B2EBE30F cmp r2, r3, asr #3
1702 0052 E8D2 bcs .L78
406:../libOLED/src/displayclass.cpp **** break;
1703 .loc 1 406 2 is_stmt 1 discriminator 2 view .LVU444
1704 0054 016A ldr r1, [r0, #32]
406:../libOLED/src/displayclass.cpp **** break;
1705 .loc 1 406 12 is_stmt 0 discriminator 2 view .LVU445
1706 0056 8B5C ldrb r3, [r1, r2] @ zero_extendqisi2
1707 0058 DB43 mvns r3, r3
1708 005a 8B54 strb r3, [r1, r2]
405:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
1709 .loc 1 405 7 discriminator 2 view .LVU446
1710 005c 0132 adds r2, r2, #1
1711 .LVL154:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 39
1712 .L80:
405:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
1713 .loc 1 405 41 discriminator 3 view .LVU447
1714 005e 4168 ldr r1, [r0, #4]
405:../libOLED/src/displayclass.cpp **** m_data[i] ^= 255;
1715 .loc 1 405 50 discriminator 3 view .LVU448
1716 0060 8368 ldr r3, [r0, #8]
1717 .LVL155:
1718 .LBB25:
1719 .LBI25:
13:../libOLED/inc/libOLED/displayclass.H **** {
1720 .loc 2 13 1 is_stmt 1 discriminator 3 view .LVU449
1721 .LBB26:
1722 .loc 2 15 3 discriminator 3 view .LVU450
1723 .loc 2 15 17 is_stmt 0 discriminator 3 view .LVU451
1724 0062 03FB01F3 mul r3, r3, r1
1725 .LVL156:
1726 .loc 2 15 29 discriminator 3 view .LVU452
1727 0066 002B cmp r3, #0
1728 0068 F1DA bge .L86
1729 006a 0733 adds r3, r3, #7
1730 006c EFE7 b .L86
1731 .LBE26:
1732 .LBE25:
1733 .LBE24:
1734 .LBE27:
1735 .LBE28:
1736 .cfi_endproc
1737 .LFE55:
1739 .section .text._ZN9display_t4initEv,"ax",%progbits
1740 .align 1
1741 .global _ZN9display_t4initEv
1742 .syntax unified
1743 .thumb
1744 .thumb_func
1745 .fpu softvfp
1747 _ZN9display_t4initEv:
1748 .LVL157:
1749 .LFB42:
113:../libOLED/src/displayclass.cpp **** uint8_t const vccstate = SSD1306_EXTERNALVCC;
1750 .loc 1 113 1 is_stmt 1 view -0
1751 .cfi_startproc
1752 @ args = 0, pretend = 0, frame = 0
1753 @ frame_needed = 0, uses_anonymous_args = 0
113:../libOLED/src/displayclass.cpp **** uint8_t const vccstate = SSD1306_EXTERNALVCC;
1754 .loc 1 113 1 is_stmt 0 view .LVU454
1755 0000 10B5 push {r4, lr}
1756 .LCFI16:
1757 .cfi_def_cfa_offset 8
1758 .cfi_offset 4, -8
1759 .cfi_offset 14, -4
1760 0002 0446 mov r4, r0
114:../libOLED/src/displayclass.cpp ****
1761 .loc 1 114 3 is_stmt 1 view .LVU455
1762 .LVL158:
117:../libOLED/src/displayclass.cpp ****
1763 .loc 1 117 3 view .LVU456
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 40
117:../libOLED/src/displayclass.cpp ****
1764 .loc 1 117 15 is_stmt 0 view .LVU457
1765 0004 0368 ldr r3, [r0]
1766 0006 9B68 ldr r3, [r3, #8]
117:../libOLED/src/displayclass.cpp ****
1767 .loc 1 117 13 view .LVU458
1768 0008 0021 movs r1, #0
1769 000a 9847 blx r3
1770 .LVL159:
120:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
1771 .loc 1 120 3 is_stmt 1 view .LVU459
120:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
1772 .loc 1 120 32 is_stmt 0 view .LVU460
1773 000c 2368 ldr r3, [r4]
1774 000e DB68 ldr r3, [r3, #12]
120:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYCLOCKDIV); // 0xD5
1775 .loc 1 120 13 view .LVU461
1776 0010 AE21 movs r1, #174
1777 0012 2046 mov r0, r4
1778 0014 9847 blx r3
1779 .LVL160:
121:../libOLED/src/displayclass.cpp **** oledWrite (0x80); // the suggested ratio 0x80
1780 .loc 1 121 3 is_stmt 1 view .LVU462
121:../libOLED/src/displayclass.cpp **** oledWrite (0x80); // the suggested ratio 0x80
1781 .loc 1 121 40 is_stmt 0 view .LVU463
1782 0016 2368 ldr r3, [r4]
1783 0018 DB68 ldr r3, [r3, #12]
121:../libOLED/src/displayclass.cpp **** oledWrite (0x80); // the suggested ratio 0x80
1784 .loc 1 121 13 view .LVU464
1785 001a D521 movs r1, #213
1786 001c 2046 mov r0, r4
1787 001e 9847 blx r3
1788 .LVL161:
122:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETMULTIPLEX); // 0xA8
1789 .loc 1 122 3 is_stmt 1 view .LVU465
122:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETMULTIPLEX); // 0xA8
1790 .loc 1 122 18 is_stmt 0 view .LVU466
1791 0020 2368 ldr r3, [r4]
1792 0022 DB68 ldr r3, [r3, #12]
122:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETMULTIPLEX); // 0xA8
1793 .loc 1 122 13 view .LVU467
1794 0024 8021 movs r1, #128
1795 0026 2046 mov r0, r4
1796 0028 9847 blx r3
1797 .LVL162:
123:../libOLED/src/displayclass.cpp **** oledWrite (m_height - 1);
1798 .loc 1 123 3 is_stmt 1 view .LVU468
123:../libOLED/src/displayclass.cpp **** oledWrite (m_height - 1);
1799 .loc 1 123 34 is_stmt 0 view .LVU469
1800 002a 2368 ldr r3, [r4]
1801 002c DB68 ldr r3, [r3, #12]
123:../libOLED/src/displayclass.cpp **** oledWrite (m_height - 1);
1802 .loc 1 123 13 view .LVU470
1803 002e A821 movs r1, #168
1804 0030 2046 mov r0, r4
1805 0032 9847 blx r3
1806 .LVL163:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 41
124:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYOFFSET); // 0xD3
1807 .loc 1 124 3 is_stmt 1 view .LVU471
124:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYOFFSET); // 0xD3
1808 .loc 1 124 26 is_stmt 0 view .LVU472
1809 0034 2368 ldr r3, [r4]
1810 0036 DB68 ldr r3, [r3, #12]
124:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYOFFSET); // 0xD3
1811 .loc 1 124 14 view .LVU473
1812 0038 A168 ldr r1, [r4, #8]
124:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETDISPLAYOFFSET); // 0xD3
1813 .loc 1 124 13 view .LVU474
1814 003a 0139 subs r1, r1, #1
1815 003c C9B2 uxtb r1, r1
1816 003e 2046 mov r0, r4
1817 0040 9847 blx r3
1818 .LVL164:
125:../libOLED/src/displayclass.cpp **** oledWrite (0x0); // no offset
1819 .loc 1 125 3 is_stmt 1 view .LVU475
125:../libOLED/src/displayclass.cpp **** oledWrite (0x0); // no offset
1820 .loc 1 125 38 is_stmt 0 view .LVU476
1821 0042 2368 ldr r3, [r4]
1822 0044 DB68 ldr r3, [r3, #12]
125:../libOLED/src/displayclass.cpp **** oledWrite (0x0); // no offset
1823 .loc 1 125 13 view .LVU477
1824 0046 D321 movs r1, #211
1825 0048 2046 mov r0, r4
1826 004a 9847 blx r3
1827 .LVL165:
126:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETSTARTLINE | 0x0); // line #0
1828 .loc 1 126 3 is_stmt 1 view .LVU478
126:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETSTARTLINE | 0x0); // line #0
1829 .loc 1 126 17 is_stmt 0 view .LVU479
1830 004c 2368 ldr r3, [r4]
1831 004e DB68 ldr r3, [r3, #12]
126:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETSTARTLINE | 0x0); // line #0
1832 .loc 1 126 13 view .LVU480
1833 0050 0021 movs r1, #0
1834 0052 2046 mov r0, r4
1835 0054 9847 blx r3
1836 .LVL166:
127:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_CHARGEPUMP); // 0x8D
1837 .loc 1 127 3 is_stmt 1 view .LVU481
127:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_CHARGEPUMP); // 0x8D
1838 .loc 1 127 40 is_stmt 0 view .LVU482
1839 0056 2368 ldr r3, [r4]
1840 0058 DB68 ldr r3, [r3, #12]
127:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_CHARGEPUMP); // 0x8D
1841 .loc 1 127 13 view .LVU483
1842 005a 4021 movs r1, #64
1843 005c 2046 mov r0, r4
1844 005e 9847 blx r3
1845 .LVL167:
128:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x10 : 0x14);
1846 .loc 1 128 3 is_stmt 1 view .LVU484
128:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x10 : 0x14);
1847 .loc 1 128 32 is_stmt 0 view .LVU485
1848 0060 2368 ldr r3, [r4]
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 42
1849 0062 DB68 ldr r3, [r3, #12]
128:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x10 : 0x14);
1850 .loc 1 128 13 view .LVU486
1851 0064 8D21 movs r1, #141
1852 0066 2046 mov r0, r4
1853 0068 9847 blx r3
1854 .LVL168:
129:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_MEMORYMODE); // 0x20
1855 .loc 1 129 3 is_stmt 1 view .LVU487
129:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_MEMORYMODE); // 0x20
1856 .loc 1 129 59 is_stmt 0 view .LVU488
1857 006a 2368 ldr r3, [r4]
1858 006c DB68 ldr r3, [r3, #12]
129:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_MEMORYMODE); // 0x20
1859 .loc 1 129 13 view .LVU489
1860 006e 1021 movs r1, #16
1861 0070 2046 mov r0, r4
1862 0072 9847 blx r3
1863 .LVL169:
130:../libOLED/src/displayclass.cpp **** oledWrite (0x00); // 0x0 act like ks0108
1864 .loc 1 130 3 is_stmt 1 view .LVU490
130:../libOLED/src/displayclass.cpp **** oledWrite (0x00); // 0x0 act like ks0108
1865 .loc 1 130 32 is_stmt 0 view .LVU491
1866 0074 2368 ldr r3, [r4]
1867 0076 DB68 ldr r3, [r3, #12]
130:../libOLED/src/displayclass.cpp **** oledWrite (0x00); // 0x0 act like ks0108
1868 .loc 1 130 13 view .LVU492
1869 0078 2021 movs r1, #32
1870 007a 2046 mov r0, r4
1871 007c 9847 blx r3
1872 .LVL170:
131:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SEGREMAP | 0x1);
1873 .loc 1 131 3 is_stmt 1 view .LVU493
131:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SEGREMAP | 0x1);
1874 .loc 1 131 18 is_stmt 0 view .LVU494
1875 007e 2368 ldr r3, [r4]
1876 0080 DB68 ldr r3, [r3, #12]
131:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SEGREMAP | 0x1);
1877 .loc 1 131 13 view .LVU495
1878 0082 0021 movs r1, #0
1879 0084 2046 mov r0, r4
1880 0086 9847 blx r3
1881 .LVL171:
132:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_COMSCANDEC);
1882 .loc 1 132 3 is_stmt 1 view .LVU496
132:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_COMSCANDEC);
1883 .loc 1 132 36 is_stmt 0 view .LVU497
1884 0088 2368 ldr r3, [r4]
1885 008a DB68 ldr r3, [r3, #12]
132:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_COMSCANDEC);
1886 .loc 1 132 13 view .LVU498
1887 008c A121 movs r1, #161
1888 008e 2046 mov r0, r4
1889 0090 9847 blx r3
1890 .LVL172:
133:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCOMPINS); // 0xDA
1891 .loc 1 133 3 is_stmt 1 view .LVU499
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 43
133:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCOMPINS); // 0xDA
1892 .loc 1 133 32 is_stmt 0 view .LVU500
1893 0092 2368 ldr r3, [r4]
1894 0094 DB68 ldr r3, [r3, #12]
133:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCOMPINS); // 0xDA
1895 .loc 1 133 13 view .LVU501
1896 0096 C821 movs r1, #200
1897 0098 2046 mov r0, r4
1898 009a 9847 blx r3
1899 .LVL173:
134:../libOLED/src/displayclass.cpp **** oledWrite (m_height == 32 ? 0x02 : 0x12);
1900 .loc 1 134 3 is_stmt 1 view .LVU502
134:../libOLED/src/displayclass.cpp **** oledWrite (m_height == 32 ? 0x02 : 0x12);
1901 .loc 1 134 32 is_stmt 0 view .LVU503
1902 009c 2368 ldr r3, [r4]
1903 009e DB68 ldr r3, [r3, #12]
134:../libOLED/src/displayclass.cpp **** oledWrite (m_height == 32 ? 0x02 : 0x12);
1904 .loc 1 134 13 view .LVU504
1905 00a0 DA21 movs r1, #218
1906 00a2 2046 mov r0, r4
1907 00a4 9847 blx r3
1908 .LVL174:
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
1909 .loc 1 135 3 is_stmt 1 view .LVU505
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
1910 .loc 1 135 42 is_stmt 0 view .LVU506
1911 00a6 2368 ldr r3, [r4]
1912 00a8 DB68 ldr r3, [r3, #12]
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
1913 .loc 1 135 14 view .LVU507
1914 00aa A268 ldr r2, [r4, #8]
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
1915 .loc 1 135 13 view .LVU508
1916 00ac 202A cmp r2, #32
1917 00ae 34D0 beq .L95
1918 00b0 1221 movs r1, #18
1919 .L92:
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
1920 .loc 1 135 13 discriminator 4 view .LVU509
1921 00b2 2046 mov r0, r4
1922 00b4 9847 blx r3
1923 .LVL175:
136:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x9F : 0xCF);
1924 .loc 1 136 3 is_stmt 1 discriminator 4 view .LVU510
136:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x9F : 0xCF);
1925 .loc 1 136 33 is_stmt 0 discriminator 4 view .LVU511
1926 00b6 2368 ldr r3, [r4]
1927 00b8 DB68 ldr r3, [r3, #12]
136:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x9F : 0xCF);
1928 .loc 1 136 13 discriminator 4 view .LVU512
1929 00ba 8121 movs r1, #129
1930 00bc 2046 mov r0, r4
1931 00be 9847 blx r3
1932 .LVL176:
137:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETPRECHARGE); // 0xd9
1933 .loc 1 137 3 is_stmt 1 discriminator 4 view .LVU513
137:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETPRECHARGE); // 0xd9
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 44
1934 .loc 1 137 59 is_stmt 0 discriminator 4 view .LVU514
1935 00c0 2368 ldr r3, [r4]
1936 00c2 DB68 ldr r3, [r3, #12]
137:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETPRECHARGE); // 0xd9
1937 .loc 1 137 13 discriminator 4 view .LVU515
1938 00c4 9F21 movs r1, #159
1939 00c6 2046 mov r0, r4
1940 00c8 9847 blx r3
1941 .LVL177:
138:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x22 : 0xF1);
1942 .loc 1 138 3 is_stmt 1 discriminator 4 view .LVU516
138:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x22 : 0xF1);
1943 .loc 1 138 34 is_stmt 0 discriminator 4 view .LVU517
1944 00ca 2368 ldr r3, [r4]
1945 00cc DB68 ldr r3, [r3, #12]
138:../libOLED/src/displayclass.cpp **** oledWrite (vccstate == SSD1306_EXTERNALVCC ? 0x22 : 0xF1);
1946 .loc 1 138 13 discriminator 4 view .LVU518
1947 00ce D921 movs r1, #217
1948 00d0 2046 mov r0, r4
1949 00d2 9847 blx r3
1950 .LVL178:
139:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETVCOMDETECT); // 0xDB
1951 .loc 1 139 3 is_stmt 1 discriminator 4 view .LVU519
139:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETVCOMDETECT); // 0xDB
1952 .loc 1 139 59 is_stmt 0 discriminator 4 view .LVU520
1953 00d4 2368 ldr r3, [r4]
1954 00d6 DB68 ldr r3, [r3, #12]
139:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETVCOMDETECT); // 0xDB
1955 .loc 1 139 13 discriminator 4 view .LVU521
1956 00d8 2221 movs r1, #34
1957 00da 2046 mov r0, r4
1958 00dc 9847 blx r3
1959 .LVL179:
140:../libOLED/src/displayclass.cpp **** oledWrite (0x40);
1960 .loc 1 140 3 is_stmt 1 discriminator 4 view .LVU522
140:../libOLED/src/displayclass.cpp **** oledWrite (0x40);
1961 .loc 1 140 35 is_stmt 0 discriminator 4 view .LVU523
1962 00de 2368 ldr r3, [r4]
1963 00e0 DB68 ldr r3, [r3, #12]
140:../libOLED/src/displayclass.cpp **** oledWrite (0x40);
1964 .loc 1 140 13 discriminator 4 view .LVU524
1965 00e2 DB21 movs r1, #219
1966 00e4 2046 mov r0, r4
1967 00e6 9847 blx r3
1968 .LVL180:
141:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYALLON_RESUME); // 0xA4
1969 .loc 1 141 3 is_stmt 1 discriminator 4 view .LVU525
141:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYALLON_RESUME); // 0xA4
1970 .loc 1 141 18 is_stmt 0 discriminator 4 view .LVU526
1971 00e8 2368 ldr r3, [r4]
1972 00ea DB68 ldr r3, [r3, #12]
141:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_DISPLAYALLON_RESUME); // 0xA4
1973 .loc 1 141 13 discriminator 4 view .LVU527
1974 00ec 4021 movs r1, #64
1975 00ee 2046 mov r0, r4
1976 00f0 9847 blx r3
1977 .LVL181:
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 45
142:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_NORMALDISPLAY); // 0xA6
1978 .loc 1 142 3 is_stmt 1 discriminator 4 view .LVU528
142:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_NORMALDISPLAY); // 0xA6
1979 .loc 1 142 41 is_stmt 0 discriminator 4 view .LVU529
1980 00f2 2368 ldr r3, [r4]
1981 00f4 DB68 ldr r3, [r3, #12]
142:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_NORMALDISPLAY); // 0xA6
1982 .loc 1 142 13 discriminator 4 view .LVU530
1983 00f6 A421 movs r1, #164
1984 00f8 2046 mov r0, r4
1985 00fa 9847 blx r3
1986 .LVL182:
143:../libOLED/src/displayclass.cpp ****
1987 .loc 1 143 3 is_stmt 1 discriminator 4 view .LVU531
143:../libOLED/src/displayclass.cpp ****
1988 .loc 1 143 35 is_stmt 0 discriminator 4 view .LVU532
1989 00fc 2368 ldr r3, [r4]
1990 00fe DB68 ldr r3, [r3, #12]
143:../libOLED/src/displayclass.cpp ****
1991 .loc 1 143 13 discriminator 4 view .LVU533
1992 0100 A621 movs r1, #166
1993 0102 2046 mov r0, r4
1994 0104 9847 blx r3
1995 .LVL183:
145:../libOLED/src/displayclass.cpp ****
1996 .loc 1 145 3 is_stmt 1 discriminator 4 view .LVU534
145:../libOLED/src/displayclass.cpp ****
1997 .loc 1 145 31 is_stmt 0 discriminator 4 view .LVU535
1998 0106 2368 ldr r3, [r4]
1999 0108 DB68 ldr r3, [r3, #12]
145:../libOLED/src/displayclass.cpp ****
2000 .loc 1 145 13 discriminator 4 view .LVU536
2001 010a AF21 movs r1, #175
2002 010c 2046 mov r0, r4
2003 010e 9847 blx r3
2004 .LVL184:
147:../libOLED/src/displayclass.cpp ****
2005 .loc 1 147 3 is_stmt 1 discriminator 4 view .LVU537
147:../libOLED/src/displayclass.cpp ****
2006 .loc 1 147 16 is_stmt 0 discriminator 4 view .LVU538
2007 0110 0021 movs r1, #0
2008 0112 2046 mov r0, r4
2009 0114 FFF7FEFF bl _ZN9display_t12clearDisplayE8colour_t
2010 .LVL185:
149:../libOLED/src/displayclass.cpp ****
2011 .loc 1 149 1 discriminator 4 view .LVU539
2012 0118 10BD pop {r4, pc}
2013 .LVL186:
2014 .L95:
135:../libOLED/src/displayclass.cpp **** oledWrite (SSD1306_SETCONTRAST); // 0x81
2015 .loc 1 135 13 view .LVU540
2016 011a 0221 movs r1, #2
2017 011c C9E7 b .L92
2018 .cfi_endproc
2019 .LFE42:
2021 .section .text._ZN9display_t13drawRectangleEssss8colour_t,"ax",%progbits
2022 .align 1
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 46
2023 .global _ZN9display_t13drawRectangleEssss8colour_t
2024 .syntax unified
2025 .thumb
2026 .thumb_func
2027 .fpu softvfp
2029 _ZN9display_t13drawRectangleEssss8colour_t:
2030 .LVL187:
2031 .LFB56:
411:../libOLED/src/displayclass.cpp ****
412:../libOLED/src/displayclass.cpp **** void
413:../libOLED/src/displayclass.cpp **** display_t::drawRectangle (int16_t x1, int16_t y1, int16_t x2, int16_t y2,
414:../libOLED/src/displayclass.cpp **** colour_t color)
415:../libOLED/src/displayclass.cpp **** {
2032 .loc 1 415 1 is_stmt 1 view -0
2033 .cfi_startproc
2034 @ args = 8, pretend = 0, frame = 0
2035 @ frame_needed = 0, uses_anonymous_args = 0
2036 .loc 1 415 1 is_stmt 0 view .LVU542
2037 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr}
2038 .LCFI17:
2039 .cfi_def_cfa_offset 28
2040 .cfi_offset 4, -28
2041 .cfi_offset 5, -24
2042 .cfi_offset 6, -20
2043 .cfi_offset 7, -16
2044 .cfi_offset 8, -12
2045 .cfi_offset 9, -8
2046 .cfi_offset 14, -4
2047 0004 9646 mov lr, r2
2048 0006 9946 mov r9, r3
2049 0008 BDF91C70 ldrsh r7, [sp, #28]
2050 000c 9DF82060 ldrb r6, [sp, #32] @ zero_extendqisi2
416:../libOLED/src/displayclass.cpp **** for (int16_t x = x1; x <= x2; x++)
2051 .loc 1 416 3 is_stmt 1 view .LVU543
2052 .LVL188:
2053 .loc 1 416 3 is_stmt 0 view .LVU544
2054 0010 50E0 b .L107
2055 .LVL189:
2056 .L99:
2057 .LBB29:
2058 .LBB30:
417:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
418:../libOLED/src/displayclass.cpp **** {
419:../libOLED/src/displayclass.cpp **** switch (color)
420:../libOLED/src/displayclass.cpp **** {
421:../libOLED/src/displayclass.cpp **** case BLACK:
2059 .loc 1 421 4 is_stmt 1 view .LVU545
422:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] &= ~(1 << (y & 7));
2060 .loc 1 422 6 view .LVU546
2061 0012 026A ldr r2, [r0, #32]
2062 .loc 1 422 20 is_stmt 0 view .LVU547
2063 0014 2546 mov r5, r4
2064 0016 002C cmp r4, #0
2065 0018 2EDB blt .L110
2066 .L102:
2067 001a 45F3CF05 sbfx r5, r5, #3, #16
2068 .loc 1 422 36 view .LVU548
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 47
2069 001e 4368 ldr r3, [r0, #4]
2070 0020 03FB0515 mla r5, r3, r5, r1
2071 .loc 1 422 49 view .LVU549
2072 0024 04F00708 and r8, r4, #7
2073 .loc 1 422 43 view .LVU550
2074 0028 4FF0010C mov ip, #1
2075 002c 0CFA08F8 lsl r8, ip, r8
2076 .loc 1 422 36 view .LVU551
2077 0030 12F805C0 ldrb ip, [r2, r5] @ zero_extendqisi2
2078 0034 2CEA080C bic ip, ip, r8
2079 0038 02F805C0 strb ip, [r2, r5]
423:../libOLED/src/displayclass.cpp **** break;
2080 .loc 1 423 6 is_stmt 1 view .LVU552
2081 .L103:
417:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2082 .loc 1 417 5 is_stmt 0 discriminator 2 view .LVU553
2083 003c 0134 adds r4, r4, #1
2084 .LVL190:
417:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2085 .loc 1 417 5 discriminator 2 view .LVU554
2086 003e 24B2 sxth r4, r4
2087 .LVL191:
2088 .L106:
417:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2089 .loc 1 417 28 discriminator 1 view .LVU555
2090 0040 BC42 cmp r4, r7
2091 0042 35DA bge .L98
419:../libOLED/src/displayclass.cpp **** {
2092 .loc 1 419 2 is_stmt 1 view .LVU556
2093 0044 002E cmp r6, #0
2094 0046 E4D0 beq .L99
2095 0048 032E cmp r6, #3
2096 004a 19D0 beq .L100
424:../libOLED/src/displayclass.cpp ****
425:../libOLED/src/displayclass.cpp **** default:
2097 .loc 1 425 4 view .LVU557
426:../libOLED/src/displayclass.cpp **** case WHITE:
2098 .loc 1 426 4 view .LVU558
427:../libOLED/src/displayclass.cpp **** case OVERLAY:
2099 .loc 1 427 4 view .LVU559
428:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] |= (1 << (y & 7));
2100 .loc 1 428 6 view .LVU560
2101 004c 026A ldr r2, [r0, #32]
2102 .loc 1 428 20 is_stmt 0 view .LVU561
2103 004e 2546 mov r5, r4
2104 0050 002C cmp r4, #0
2105 0052 13DB blt .L111
2106 .L104:
2107 0054 45F3CF05 sbfx r5, r5, #3, #16
2108 .loc 1 428 36 view .LVU562
2109 0058 4368 ldr r3, [r0, #4]
2110 005a 03FB0515 mla r5, r3, r5, r1
2111 .loc 1 428 48 view .LVU563
2112 005e 04F00708 and r8, r4, #7
2113 .loc 1 428 42 view .LVU564
2114 0062 4FF0010C mov ip, #1
2115 0066 0CFA08F8 lsl r8, ip, r8
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 48
2116 .loc 1 428 36 view .LVU565
2117 006a 12F805C0 ldrb ip, [r2, r5] @ zero_extendqisi2
2118 006e 4CEA080C orr ip, ip, r8
2119 0072 02F805C0 strb ip, [r2, r5]
429:../libOLED/src/displayclass.cpp **** break;
2120 .loc 1 429 6 is_stmt 1 view .LVU566
2121 0076 E1E7 b .L103
2122 .L110:
422:../libOLED/src/displayclass.cpp **** break;
2123 .loc 1 422 20 is_stmt 0 view .LVU567
2124 0078 E51D adds r5, r4, #7
2125 007a CEE7 b .L102
2126 .L111:
428:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] |= (1 << (y & 7));
2127 .loc 1 428 20 view .LVU568
2128 007c E51D adds r5, r4, #7
2129 007e E9E7 b .L104
2130 .L100:
430:../libOLED/src/displayclass.cpp ****
431:../libOLED/src/displayclass.cpp **** case INVERT:
2131 .loc 1 431 4 is_stmt 1 view .LVU569
432:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] ^= (1 << (y & 7));
2132 .loc 1 432 6 view .LVU570
2133 0080 026A ldr r2, [r0, #32]
2134 .loc 1 432 20 is_stmt 0 view .LVU571
2135 0082 2546 mov r5, r4
2136 0084 002C cmp r4, #0
2137 0086 11DB blt .L112
2138 .L105:
2139 0088 45F3CF05 sbfx r5, r5, #3, #16
2140 .loc 1 432 36 view .LVU572
2141 008c 4368 ldr r3, [r0, #4]
2142 008e 03FB0515 mla r5, r3, r5, r1
2143 .loc 1 432 48 view .LVU573
2144 0092 04F00708 and r8, r4, #7
2145 .loc 1 432 42 view .LVU574
2146 0096 4FF0010C mov ip, #1
2147 009a 0CFA08F8 lsl r8, ip, r8
2148 .loc 1 432 36 view .LVU575
2149 009e 12F805C0 ldrb ip, [r2, r5] @ zero_extendqisi2
2150 00a2 8CEA080C eor ip, ip, r8
2151 00a6 02F805C0 strb ip, [r2, r5]
433:../libOLED/src/displayclass.cpp **** break;
2152 .loc 1 433 6 is_stmt 1 view .LVU576
2153 00aa C7E7 b .L103
2154 .L112:
432:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] ^= (1 << (y & 7));
2155 .loc 1 432 20 is_stmt 0 view .LVU577
2156 00ac E51D adds r5, r4, #7
2157 00ae EBE7 b .L105
2158 .L98:
432:../libOLED/src/displayclass.cpp **** m_data[x + (y / 8) * m_width] ^= (1 << (y & 7));
2159 .loc 1 432 20 view .LVU578
2160 .LBE30:
416:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2161 .loc 1 416 3 discriminator 2 view .LVU579
2162 00b0 0131 adds r1, r1, #1
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 49
2163 .LVL192:
416:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2164 .loc 1 416 3 discriminator 2 view .LVU580
2165 00b2 09B2 sxth r1, r1
2166 .LVL193:
2167 .L107:
416:../libOLED/src/displayclass.cpp **** for (int16_t y = y1; y < y2; y++)
2168 .loc 1 416 26 discriminator 1 view .LVU581
2169 00b4 4945 cmp r1, r9
2170 00b6 01DC bgt .L96
2171 .LBB31:
417:../libOLED/src/displayclass.cpp **** {
2172 .loc 1 417 18 view .LVU582
2173 00b8 7446 mov r4, lr
2174 00ba C1E7 b .L106
2175 .L96:
2176 .LBE31:
2177 .LBE29:
434:../libOLED/src/displayclass.cpp **** }
435:../libOLED/src/displayclass.cpp **** }
436:../libOLED/src/displayclass.cpp **** }
2178 .loc 1 436 1 view .LVU583
2179 00bc BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc}
2180 .loc 1 436 1 view .LVU584
2181 .cfi_endproc
2182 .LFE56:
2184 .section .text._ZN9display_t8drawLineEssss8colour_t,"ax",%progbits
2185 .align 1
2186 .global _ZN9display_t8drawLineEssss8colour_t
2187 .syntax unified
2188 .thumb
2189 .thumb_func
2190 .fpu softvfp
2192 _ZN9display_t8drawLineEssss8colour_t:
2193 .LVL194:
2194 .LFB57:
437:../libOLED/src/displayclass.cpp ****
438:../libOLED/src/displayclass.cpp **** /* using Bresenham draw algorithm */
439:../libOLED/src/displayclass.cpp **** void
440:../libOLED/src/displayclass.cpp **** display_t::drawLine (int16_t x1, int16_t y1, int16_t x2, int16_t y2,
441:../libOLED/src/displayclass.cpp **** colour_t colour)
442:../libOLED/src/displayclass.cpp **** {
2195 .loc 1 442 1 is_stmt 1 view -0
2196 .cfi_startproc
2197 @ args = 8, pretend = 0, frame = 16
2198 @ frame_needed = 0, uses_anonymous_args = 0
2199 .loc 1 442 1 is_stmt 0 view .LVU586
2200 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
2201 .LCFI18:
2202 .cfi_def_cfa_offset 36
2203 .cfi_offset 4, -36
2204 .cfi_offset 5, -32
2205 .cfi_offset 6, -28
2206 .cfi_offset 7, -24
2207 .cfi_offset 8, -20
2208 .cfi_offset 9, -16
2209 .cfi_offset 10, -12
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 50
2210 .cfi_offset 11, -8
2211 .cfi_offset 14, -4
2212 0004 85B0 sub sp, sp, #20
2213 .LCFI19:
2214 .cfi_def_cfa_offset 56
2215 0006 0190 str r0, [sp, #4]
2216 0008 0C46 mov r4, r1
2217 000a 1546 mov r5, r2
443:../libOLED/src/displayclass.cpp **** int16_t x, y, dx, dy, //deltas
2218 .loc 1 443 3 is_stmt 1 view .LVU587
444:../libOLED/src/displayclass.cpp **** dx2, dy2, //scaled deltas
445:../libOLED/src/displayclass.cpp **** ix, iy, //increase rate on the x and y axis
446:../libOLED/src/displayclass.cpp **** err; //the error term
447:../libOLED/src/displayclass.cpp ****
448:../libOLED/src/displayclass.cpp ****
449:../libOLED/src/displayclass.cpp **** uint16_t i; //looping variable
2219 .loc 1 449 3 view .LVU588
450:../libOLED/src/displayclass.cpp ****
451:../libOLED/src/displayclass.cpp **** setPixelMode(colour);
2220 .loc 1 451 3 view .LVU589
2221 .LVL195:
2222 .LBB32:
2223 .LBI32:
16:../libOLED/inc/libOLED/displayclass.H **** }
17:../libOLED/inc/libOLED/displayclass.H ****
18:../libOLED/inc/libOLED/displayclass.H **** enum colour_t
19:../libOLED/inc/libOLED/displayclass.H **** {
20:../libOLED/inc/libOLED/displayclass.H **** BLACK, /* and 0, invert 0 */
21:../libOLED/inc/libOLED/displayclass.H **** WHITE, /* and 0, invert 1 */
22:../libOLED/inc/libOLED/displayclass.H **** OVERLAY, /* and 1, invert 0 */
23:../libOLED/inc/libOLED/displayclass.H **** INVERT, /* and 1, invert 1 */
24:../libOLED/inc/libOLED/displayclass.H **** };
25:../libOLED/inc/libOLED/displayclass.H ****
26:../libOLED/inc/libOLED/displayclass.H **** class display_t
27:../libOLED/inc/libOLED/displayclass.H **** {
28:../libOLED/inc/libOLED/displayclass.H **** public:
29:../libOLED/inc/libOLED/displayclass.H **** display_t (int const width, int const height, int const ramwidth,
30:../libOLED/inc/libOLED/displayclass.H **** uint8_t *const data);
31:../libOLED/inc/libOLED/displayclass.H ****
32:../libOLED/inc/libOLED/displayclass.H **** virtual
33:../libOLED/inc/libOLED/displayclass.H **** ~display_t ();
34:../libOLED/inc/libOLED/displayclass.H ****
35:../libOLED/inc/libOLED/displayclass.H **** uint8_t
36:../libOLED/inc/libOLED/displayclass.H **** getRotation ();
37:../libOLED/inc/libOLED/displayclass.H **** int16_t
38:../libOLED/inc/libOLED/displayclass.H **** width ();
39:../libOLED/inc/libOLED/displayclass.H **** int16_t
40:../libOLED/inc/libOLED/displayclass.H **** height ();
41:../libOLED/inc/libOLED/displayclass.H ****
42:../libOLED/inc/libOLED/displayclass.H **** // common hardware reset .
43:../libOLED/inc/libOLED/displayclass.H **** void reset();
44:../libOLED/inc/libOLED/displayclass.H ****
45:../libOLED/inc/libOLED/displayclass.H **** void
46:../libOLED/inc/libOLED/displayclass.H **** init ();
47:../libOLED/inc/libOLED/displayclass.H ****
48:../libOLED/inc/libOLED/displayclass.H **** /// \brief Clear display to colour
49:../libOLED/inc/libOLED/displayclass.H **** void
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 51
50:../libOLED/inc/libOLED/displayclass.H **** clearDisplay (colour_t colour = colour_t::BLACK);
51:../libOLED/inc/libOLED/displayclass.H **** void
52:../libOLED/inc/libOLED/displayclass.H **** invertDisplay (uint8_t i);
53:../libOLED/inc/libOLED/displayclass.H **** void
54:../libOLED/inc/libOLED/displayclass.H **** display ();
55:../libOLED/inc/libOLED/displayclass.H ****
56:../libOLED/inc/libOLED/displayclass.H **** void
57:../libOLED/inc/libOLED/displayclass.H **** startscrollright (uint8_t start, uint8_t stop);
58:../libOLED/inc/libOLED/displayclass.H **** void
59:../libOLED/inc/libOLED/displayclass.H **** startscrollleft (uint8_t start, uint8_t stop);
60:../libOLED/inc/libOLED/displayclass.H ****
61:../libOLED/inc/libOLED/displayclass.H **** void
62:../libOLED/inc/libOLED/displayclass.H **** startscrolldiagright (uint8_t start, uint8_t stop);
63:../libOLED/inc/libOLED/displayclass.H **** void
64:../libOLED/inc/libOLED/displayclass.H **** startscrolldiagleft (uint8_t start, uint8_t stop);
65:../libOLED/inc/libOLED/displayclass.H **** void
66:../libOLED/inc/libOLED/displayclass.H **** stopscroll (void);
67:../libOLED/inc/libOLED/displayclass.H ****
68:../libOLED/inc/libOLED/displayclass.H **** void
69:../libOLED/inc/libOLED/displayclass.H **** dim (uint8_t contrast);
70:../libOLED/inc/libOLED/displayclass.H ****
71:../libOLED/inc/libOLED/displayclass.H **** // set drawing mode
72:../libOLED/inc/libOLED/displayclass.H **** void setPixelMode(colour_t colour)
2224 .loc 2 72 8 view .LVU590
2225 .LBB33:
73:../libOLED/inc/libOLED/displayclass.H **** { m_colour = colour; }
2226 .loc 2 73 5 view .LVU591
2227 .loc 2 73 14 is_stmt 0 view .LVU592
2228 000c 9DF83C20 ldrb r2, [sp, #60] @ zero_extendqisi2
2229 .LVL196:
2230 .loc 2 73 14 view .LVU593
2231 0010 0277 strb r2, [r0, #28]
2232 .LVL197:
2233 .loc 2 73 14 view .LVU594
2234 .LBE33:
2235 .LBE32:
452:../libOLED/src/displayclass.cpp ****
453:../libOLED/src/displayclass.cpp **** // identify the first pixel
454:../libOLED/src/displayclass.cpp **** x = x1;
2236 .loc 1 454 3 is_stmt 1 view .LVU595
455:../libOLED/src/displayclass.cpp **** y = y1;
2237 .loc 1 455 3 view .LVU596
456:../libOLED/src/displayclass.cpp ****
457:../libOLED/src/displayclass.cpp **** // difference between starting and ending points
458:../libOLED/src/displayclass.cpp **** dx = x2 - x1;
2238 .loc 1 458 3 view .LVU597
2239 .loc 1 458 11 is_stmt 0 view .LVU598
2240 0012 1B1B subs r3, r3, r4
2241 .LVL198:
2242 .loc 1 458 6 view .LVU599
2243 0014 1FB2 sxth r7, r3
2244 .LVL199:
459:../libOLED/src/displayclass.cpp **** dy = y2 - y1;
2245 .loc 1 459 3 is_stmt 1 view .LVU600
2246 .loc 1 459 11 is_stmt 0 view .LVU601
2247 0016 BDF938B0 ldrsh fp, [sp, #56]
2248 001a ABEB050B sub fp, fp, r5
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 52
2249 .loc 1 459 6 view .LVU602
2250 001e 0FFA8BFB sxth fp, fp
2251 .LVL200:
460:../libOLED/src/displayclass.cpp ****
461:../libOLED/src/displayclass.cpp **** // calculate direction of the vector and store in ix and iy
462:../libOLED/src/displayclass.cpp **** if (dx >= 0)
2252 .loc 1 462 3 is_stmt 1 view .LVU603
463:../libOLED/src/displayclass.cpp **** ix = 1;
464:../libOLED/src/displayclass.cpp ****
465:../libOLED/src/displayclass.cpp **** if (dx < 0)
2253 .loc 1 465 3 view .LVU604
2254 0022 002F cmp r7, #0
2255 0024 1DDB blt .L125
2256 0026 0123 movs r3, #1
2257 0028 0293 str r3, [sp, #8]
2258 .LVL201:
2259 .L114:
466:../libOLED/src/displayclass.cpp **** {
467:../libOLED/src/displayclass.cpp **** ix = -1;
468:../libOLED/src/displayclass.cpp **** dx = abs (dx);
469:../libOLED/src/displayclass.cpp **** }
470:../libOLED/src/displayclass.cpp ****
471:../libOLED/src/displayclass.cpp **** if (dy >= 0)
2260 .loc 1 471 3 view .LVU605
472:../libOLED/src/displayclass.cpp **** iy = 1;
473:../libOLED/src/displayclass.cpp ****
474:../libOLED/src/displayclass.cpp **** if (dy < 0)
2261 .loc 1 474 3 view .LVU606
2262 002a BBF1000F cmp fp, #0
2263 002e 20DB blt .L126
2264 .loc 1 474 3 is_stmt 0 view .LVU607
2265 0030 4FF0010A mov r10, #1
2266 .LVL202:
2267 .L115:
475:../libOLED/src/displayclass.cpp **** {
476:../libOLED/src/displayclass.cpp **** iy = -1;
477:../libOLED/src/displayclass.cpp **** dy = abs (dy);
478:../libOLED/src/displayclass.cpp **** }
479:../libOLED/src/displayclass.cpp ****
480:../libOLED/src/displayclass.cpp **** // scale deltas and store in dx2 and dy2
481:../libOLED/src/displayclass.cpp **** dx2 = dx * 2;
2268 .loc 1 481 3 is_stmt 1 view .LVU608
2269 .loc 1 481 12 is_stmt 0 view .LVU609
2270 0034 BEB2 uxth r6, r7
2271 0036 4FEA4608 lsl r8, r6, #1
2272 003a 1FFA88F8 uxth r8, r8
2273 .LVL203:
482:../libOLED/src/displayclass.cpp **** dy2 = dy * 2;
2274 .loc 1 482 3 is_stmt 1 view .LVU610
2275 .loc 1 482 12 is_stmt 0 view .LVU611
2276 003e 1FFA8BF3 uxth r3, fp
2277 0042 4FEA4309 lsl r9, r3, #1
2278 0046 1FFA89F9 uxth r9, r9
2279 .LVL204:
483:../libOLED/src/displayclass.cpp ****
484:../libOLED/src/displayclass.cpp **** // all variables are set and it's time to enter the main loop.
485:../libOLED/src/displayclass.cpp ****
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 53
486:../libOLED/src/displayclass.cpp **** if (dx > dy) // dx is the major axis
2280 .loc 1 486 3 is_stmt 1 view .LVU612
2281 004a 5F45 cmp r7, fp
2282 004c 30DD ble .L116
487:../libOLED/src/displayclass.cpp **** {
488:../libOLED/src/displayclass.cpp **** // initialize the error term
489:../libOLED/src/displayclass.cpp **** err = dy2 - dx;
2283 .loc 1 489 7 view .LVU613
2284 .loc 1 489 17 is_stmt 0 view .LVU614
2285 004e A9EB0606 sub r6, r9, r6
2286 .loc 1 489 11 view .LVU615
2287 0052 36B2 sxth r6, r6
2288 .LVL205:
490:../libOLED/src/displayclass.cpp ****
491:../libOLED/src/displayclass.cpp **** for (i = 0; i <= dx; i++)
2289 .loc 1 491 7 is_stmt 1 view .LVU616
2290 .loc 1 491 14 is_stmt 0 view .LVU617
2291 0054 4FF0000B mov fp, #0
2292 .LVL206:
2293 .loc 1 491 14 view .LVU618
2294 0058 CDF80C80 str r8, [sp, #12]
2295 005c DDF80880 ldr r8, [sp, #8]
2296 .LVL207:
2297 .loc 1 491 14 view .LVU619
2298 0060 16E0 b .L119
2299 .LVL208:
2300 .L125:
467:../libOLED/src/displayclass.cpp **** dx = abs (dx);
2301 .loc 1 467 7 is_stmt 1 view .LVU620
468:../libOLED/src/displayclass.cpp **** }
2302 .loc 1 468 7 view .LVU621
468:../libOLED/src/displayclass.cpp **** }
2303 .loc 1 468 16 is_stmt 0 view .LVU622
2304 0062 3846 mov r0, r7
2305 .LVL209:
468:../libOLED/src/displayclass.cpp **** }
2306 .loc 1 468 16 view .LVU623
2307 0064 FFF7FEFF bl _ZN12_GLOBAL__N_13absIsEET_S1_
2308 .LVL210:
468:../libOLED/src/displayclass.cpp **** }
2309 .loc 1 468 16 view .LVU624
2310 0068 0746 mov r7, r0
2311 .LVL211:
467:../libOLED/src/displayclass.cpp **** dx = abs (dx);
2312 .loc 1 467 10 view .LVU625
2313 006a 4FF0FF33 mov r3, #-1
2314 006e 0293 str r3, [sp, #8]
2315 0070 DBE7 b .L114
2316 .LVL212:
2317 .L126:
476:../libOLED/src/displayclass.cpp **** dy = abs (dy);
2318 .loc 1 476 7 is_stmt 1 view .LVU626
477:../libOLED/src/displayclass.cpp **** }
2319 .loc 1 477 7 view .LVU627
477:../libOLED/src/displayclass.cpp **** }
2320 .loc 1 477 16 is_stmt 0 view .LVU628
2321 0072 5846 mov r0, fp
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 54
2322 0074 FFF7FEFF bl _ZN12_GLOBAL__N_13absIsEET_S1_
2323 .LVL213:
2324 0078 8346 mov fp, r0
2325 .LVL214:
476:../libOLED/src/displayclass.cpp **** dy = abs (dy);
2326 .loc 1 476 10 view .LVU629
2327 007a 4FF0FF3A mov r10, #-1
2328 007e D9E7 b .L115
2329 .LVL215:
2330 .L118:
492:../libOLED/src/displayclass.cpp **** {
493:../libOLED/src/displayclass.cpp **** drawPixel (x, y, 1);
494:../libOLED/src/displayclass.cpp **** if (err >= 0)
495:../libOLED/src/displayclass.cpp **** {
496:../libOLED/src/displayclass.cpp **** err -= dx2;
497:../libOLED/src/displayclass.cpp **** y += iy;
498:../libOLED/src/displayclass.cpp **** }
499:../libOLED/src/displayclass.cpp **** err += dy2;
2331 .loc 1 499 4 is_stmt 1 discriminator 2 view .LVU630
2332 .loc 1 499 8 is_stmt 0 discriminator 2 view .LVU631
2333 0080 4E44 add r6, r6, r9
2334 .LVL216:
2335 .loc 1 499 8 discriminator 2 view .LVU632
2336 0082 36B2 sxth r6, r6
2337 .LVL217:
500:../libOLED/src/displayclass.cpp **** x += ix;
2338 .loc 1 500 4 is_stmt 1 discriminator 2 view .LVU633
2339 .loc 1 500 6 is_stmt 0 discriminator 2 view .LVU634
2340 0084 4444 add r4, r4, r8
2341 .LVL218:
2342 .loc 1 500 6 discriminator 2 view .LVU635
2343 0086 24B2 sxth r4, r4
2344 .LVL219:
491:../libOLED/src/displayclass.cpp **** {
2345 .loc 1 491 7 discriminator 2 view .LVU636
2346 0088 0BF1010B add fp, fp, #1
2347 .LVL220:
491:../libOLED/src/displayclass.cpp **** {
2348 .loc 1 491 7 discriminator 2 view .LVU637
2349 008c 1FFA8BFB uxth fp, fp
2350 .LVL221:
2351 .L119:
491:../libOLED/src/displayclass.cpp **** {
2352 .loc 1 491 21 discriminator 1 view .LVU638
2353 0090 BB45 cmp fp, r7
2354 0092 29DC bgt .L113
493:../libOLED/src/displayclass.cpp **** if (err >= 0)
2355 .loc 1 493 4 is_stmt 1 view .LVU639
493:../libOLED/src/displayclass.cpp **** if (err >= 0)
2356 .loc 1 493 14 is_stmt 0 view .LVU640
2357 0094 0123 movs r3, #1
2358 0096 2A46 mov r2, r5
2359 0098 2146 mov r1, r4
2360 009a 0198 ldr r0, [sp, #4]
2361 009c FFF7FEFF bl _ZN9display_t9drawPixelEssb
2362 .LVL222:
494:../libOLED/src/displayclass.cpp **** {
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 55
2363 .loc 1 494 4 is_stmt 1 view .LVU641
2364 00a0 002E cmp r6, #0
2365 00a2 EDDB blt .L118
496:../libOLED/src/displayclass.cpp **** y += iy;
2366 .loc 1 496 8 view .LVU642
496:../libOLED/src/displayclass.cpp **** y += iy;
2367 .loc 1 496 12 is_stmt 0 view .LVU643
2368 00a4 039B ldr r3, [sp, #12]
2369 00a6 F61A subs r6, r6, r3
2370 .LVL223:
496:../libOLED/src/displayclass.cpp **** y += iy;
2371 .loc 1 496 12 view .LVU644
2372 00a8 36B2 sxth r6, r6
2373 .LVL224:
497:../libOLED/src/displayclass.cpp **** }
2374 .loc 1 497 8 is_stmt 1 view .LVU645
497:../libOLED/src/displayclass.cpp **** }
2375 .loc 1 497 10 is_stmt 0 view .LVU646
2376 00aa 5544 add r5, r5, r10
2377 .LVL225:
497:../libOLED/src/displayclass.cpp **** }
2378 .loc 1 497 10 view .LVU647
2379 00ac 2DB2 sxth r5, r5
2380 .LVL226:
497:../libOLED/src/displayclass.cpp **** }
2381 .loc 1 497 10 view .LVU648
2382 00ae E7E7 b .L118
2383 .LVL227:
2384 .L116:
501:../libOLED/src/displayclass.cpp **** }
502:../libOLED/src/displayclass.cpp **** }
503:../libOLED/src/displayclass.cpp ****
504:../libOLED/src/displayclass.cpp **** else // dy is the major axis
505:../libOLED/src/displayclass.cpp **** {
506:../libOLED/src/displayclass.cpp **** // initialize the error term
507:../libOLED/src/displayclass.cpp **** err = dx2 - dy;
2385 .loc 1 507 7 is_stmt 1 view .LVU649
2386 .loc 1 507 17 is_stmt 0 view .LVU650
2387 00b0 A8EB0306 sub r6, r8, r3
2388 .loc 1 507 11 view .LVU651
2389 00b4 36B2 sxth r6, r6
2390 .LVL228:
508:../libOLED/src/displayclass.cpp ****
509:../libOLED/src/displayclass.cpp **** for (i = 0; i <= dy; i++)
2391 .loc 1 509 7 is_stmt 1 view .LVU652
2392 .loc 1 509 14 is_stmt 0 view .LVU653
2393 00b6 0027 movs r7, #0
2394 .LVL229:
2395 .loc 1 509 14 view .LVU654
2396 00b8 05E0 b .L121
2397 .LVL230:
2398 .L120:
510:../libOLED/src/displayclass.cpp **** {
511:../libOLED/src/displayclass.cpp **** drawPixel (x, y, 1);
512:../libOLED/src/displayclass.cpp **** if (err >= 0)
513:../libOLED/src/displayclass.cpp **** {
514:../libOLED/src/displayclass.cpp **** err -= dy2;
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 56
515:../libOLED/src/displayclass.cpp **** x += ix;
516:../libOLED/src/displayclass.cpp **** }
517:../libOLED/src/displayclass.cpp **** err += dx2;
2399 .loc 1 517 4 is_stmt 1 discriminator 2 view .LVU655
2400 .loc 1 517 8 is_stmt 0 discriminator 2 view .LVU656
2401 00ba 4644 add r6, r6, r8
2402 .LVL231:
2403 .loc 1 517 8 discriminator 2 view .LVU657
2404 00bc 36B2 sxth r6, r6
2405 .LVL232:
518:../libOLED/src/displayclass.cpp **** y += iy;
2406 .loc 1 518 4 is_stmt 1 discriminator 2 view .LVU658
2407 .loc 1 518 6 is_stmt 0 discriminator 2 view .LVU659
2408 00be 5544 add r5, r5, r10
2409 .LVL233:
2410 .loc 1 518 6 discriminator 2 view .LVU660
2411 00c0 2DB2 sxth r5, r5
2412 .LVL234:
509:../libOLED/src/displayclass.cpp **** {
2413 .loc 1 509 7 discriminator 2 view .LVU661
2414 00c2 0137 adds r7, r7, #1
2415 .LVL235:
509:../libOLED/src/displayclass.cpp **** {
2416 .loc 1 509 7 discriminator 2 view .LVU662
2417 00c4 BFB2 uxth r7, r7
2418 .LVL236:
2419 .L121:
509:../libOLED/src/displayclass.cpp **** {
2420 .loc 1 509 21 discriminator 1 view .LVU663
2421 00c6 5F45 cmp r7, fp
2422 00c8 0EDC bgt .L113
511:../libOLED/src/displayclass.cpp **** if (err >= 0)
2423 .loc 1 511 4 is_stmt 1 view .LVU664
511:../libOLED/src/displayclass.cpp **** if (err >= 0)
2424 .loc 1 511 14 is_stmt 0 view .LVU665
2425 00ca 0123 movs r3, #1
2426 00cc 2A46 mov r2, r5
2427 00ce 2146 mov r1, r4
2428 00d0 0198 ldr r0, [sp, #4]
2429 00d2 FFF7FEFF bl _ZN9display_t9drawPixelEssb
2430 .LVL237:
512:../libOLED/src/displayclass.cpp **** {
2431 .loc 1 512 4 is_stmt 1 view .LVU666
2432 00d6 002E cmp r6, #0
2433 00d8 EFDB blt .L120
514:../libOLED/src/displayclass.cpp **** x += ix;
2434 .loc 1 514 8 view .LVU667
514:../libOLED/src/displayclass.cpp **** x += ix;
2435 .loc 1 514 12 is_stmt 0 view .LVU668
2436 00da A6EB0906 sub r6, r6, r9
2437 .LVL238:
514:../libOLED/src/displayclass.cpp **** x += ix;
2438 .loc 1 514 12 view .LVU669
2439 00de 36B2 sxth r6, r6
2440 .LVL239:
515:../libOLED/src/displayclass.cpp **** }
2441 .loc 1 515 8 is_stmt 1 view .LVU670
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 57
515:../libOLED/src/displayclass.cpp **** }
2442 .loc 1 515 10 is_stmt 0 view .LVU671
2443 00e0 029B ldr r3, [sp, #8]
2444 00e2 1C44 add r4, r4, r3
2445 .LVL240:
515:../libOLED/src/displayclass.cpp **** }
2446 .loc 1 515 10 view .LVU672
2447 00e4 24B2 sxth r4, r4
2448 .LVL241:
515:../libOLED/src/displayclass.cpp **** }
2449 .loc 1 515 10 view .LVU673
2450 00e6 E8E7 b .L120
2451 .LVL242:
2452 .L113:
519:../libOLED/src/displayclass.cpp **** }
520:../libOLED/src/displayclass.cpp **** }
521:../libOLED/src/displayclass.cpp **** }
2453 .loc 1 521 1 view .LVU674
2454 00e8 05B0 add sp, sp, #20
2455 .LCFI20:
2456 .cfi_def_cfa_offset 36
2457 @ sp needed
2458 00ea BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
2459 .loc 1 521 1 view .LVU675
2460 .cfi_endproc
2461 .LFE57:
2463 .global _ZTV9display_t
2464 .section .rodata._ZTV9display_t,"a"
2465 .align 2
2466 .set .LANCHOR0,. + 0
2469 _ZTV9display_t:
2470 0000 00000000 .word 0
2471 0004 00000000 .word 0
2472 0008 00000000 .word 0
2473 000c 00000000 .word 0
2474 0010 00000000 .word __cxa_pure_virtual
2475 0014 00000000 .word __cxa_pure_virtual
2476 0018 00000000 .word __cxa_pure_virtual
2477 001c 00000000 .word __cxa_pure_virtual
2478 .text
2479 .Letext0:
2480 .file 3 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2481 .file 4 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2482 .file 5 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2483 .file 6 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2484 .file 7 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2485 .file 8 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2486 .file 9 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
2487 .file 10 "../libOLED/inc/libOLED/fontclass.H"
2488 .file 11 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2489 .file 12 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2490 .file 13 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2491 .file 14 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2492 .file 15 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2493 .file 16 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.
2494 .file 17 "<built-in>"
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 58
DEFINED SYMBOLS
*ABS*:0000000000000000 displayclass.cpp
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:16 .text._ZN12_GLOBAL__N_14swapIsEEvRT_S2_:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:23 .text._ZN12_GLOBAL__N_14swapIsEEvRT_S2_:0000000000000000 _ZN12_GLOBAL__N_14swapIsEEvRT_S2_
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:46 .text._ZN12_GLOBAL__N_13absIsEET_S1_:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:52 .text._ZN12_GLOBAL__N_13absIsEET_S1_:0000000000000000 _ZN12_GLOBAL__N_13absIsEET_S1_
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:72 .text._ZdlPvj:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:79 .text._ZdlPvj:0000000000000000 _ZdlPvj
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:95 .text.__cxa_pure_virtual:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:102 .text.__cxa_pure_virtual:0000000000000000 __cxa_pure_virtual
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:117 .text._ZN9display_tC2EiiiPh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:124 .text._ZN9display_tC2EiiiPh:0000000000000000 _ZN9display_tC2EiiiPh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:168 .text._ZN9display_tC2EiiiPh:0000000000000020 $d
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:124 .text._ZN9display_tC2EiiiPh:0000000000000000 _ZN9display_tC1EiiiPh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:175 .text._ZN9display_tD2Ev:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:182 .text._ZN9display_tD2Ev:0000000000000000 _ZN9display_tD2Ev
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:182 .text._ZN9display_tD2Ev:0000000000000000 _ZN9display_tD1Ev
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:198 .text._ZN9display_tD0Ev:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:205 .text._ZN9display_tD0Ev:0000000000000000 _ZN9display_tD0Ev
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:219 .text._ZN9display_t5resetEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:226 .text._ZN9display_t5resetEv:0000000000000000 _ZN9display_t5resetEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:252 .text._ZN9display_t11getRotationEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:259 .text._ZN9display_t11getRotationEv:0000000000000000 _ZN9display_t11getRotationEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:277 .text._ZN9display_t5widthEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:284 .text._ZN9display_t5widthEv:0000000000000000 _ZN9display_t5widthEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:300 .text._ZN9display_t5widthEv:000000000000000a $d
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:304 .text._ZN9display_t5widthEv:000000000000000e $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:356 .text._ZN9display_t6heightEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:363 .text._ZN9display_t6heightEv:0000000000000000 _ZN9display_t6heightEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:379 .text._ZN9display_t6heightEv:000000000000000a $d
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:383 .text._ZN9display_t6heightEv:000000000000000e $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:435 .text._ZN9display_t9drawPixelEssb:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:442 .text._ZN9display_t9drawPixelEssb:0000000000000000 _ZN9display_t9drawPixelEssb
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:699 .text._ZN9display_t13invertDisplayEh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:706 .text._ZN9display_t13invertDisplayEh:0000000000000000 _ZN9display_t13invertDisplayEh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:756 .text._ZN9display_t16startscrollrightEhh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:763 .text._ZN9display_t16startscrollrightEhh:0000000000000000 _ZN9display_t16startscrollrightEhh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:870 .text._ZN9display_t15startscrollleftEhh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:877 .text._ZN9display_t15startscrollleftEhh:0000000000000000 _ZN9display_t15startscrollleftEhh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:984 .text._ZN9display_t20startscrolldiagrightEhh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:991 .text._ZN9display_t20startscrolldiagrightEhh:0000000000000000 _ZN9display_t20startscrolldiagrightEhh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1116 .text._ZN9display_t19startscrolldiagleftEhh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1123 .text._ZN9display_t19startscrolldiagleftEhh:0000000000000000 _ZN9display_t19startscrolldiagleftEhh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1248 .text._ZN9display_t10stopscrollEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1255 .text._ZN9display_t10stopscrollEv:0000000000000000 _ZN9display_t10stopscrollEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1293 .text._ZN9display_t3dimEh:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1300 .text._ZN9display_t3dimEh:0000000000000000 _ZN9display_t3dimEh
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1352 .text._ZN9display_t7displayEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1359 .text._ZN9display_t7displayEv:0000000000000000 _ZN9display_t7displayEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1556 .text._ZN9display_t12clearDisplayE8colour_t:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1563 .text._ZN9display_t12clearDisplayE8colour_t:0000000000000000 _ZN9display_t12clearDisplayE8colour_t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1582 .text._ZN9display_t12clearDisplayE8colour_t:000000000000000a $d
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1586 .text._ZN9display_t12clearDisplayE8colour_t:000000000000000e $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1740 .text._ZN9display_t4initEv:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:1747 .text._ZN9display_t4initEv:0000000000000000 _ZN9display_t4initEv
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2022 .text._ZN9display_t13drawRectangleEssss8colour_t:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2029 .text._ZN9display_t13drawRectangleEssss8colour_t:0000000000000000 _ZN9display_t13drawRectangleEssss8colour_t
ARM GAS C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s page 59
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2185 .text._ZN9display_t8drawLineEssss8colour_t:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2192 .text._ZN9display_t8drawLineEssss8colour_t:0000000000000000 _ZN9display_t8drawLineEssss8colour_t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2469 .rodata._ZTV9display_t:0000000000000000 _ZTV9display_t
C:\Users\mike\AppData\Local\Temp\ccmjnRrp.s:2465 .rodata._ZTV9display_t:0000000000000000 $d
UNDEFINED SYMBOLS
memset