1 00:00:00,560 --> 00:00:08,300 In the realm of computer systems, memory serves as a crucial component that acts as a storage repository 2 00:00:08,300 --> 00:00:11,060 for both data and instructions. 3 00:00:11,480 --> 00:00:18,860 As we have previously previously explored, there exists specialized storage elements called registers 4 00:00:18,860 --> 00:00:23,420 that enable high speed access to critical information. 5 00:00:23,420 --> 00:00:30,470 So while registers provide rapid data retrieval, it's important to acknowledge that memory access operates 6 00:00:30,470 --> 00:00:33,290 at a comparably slower pace. 7 00:00:33,290 --> 00:00:41,540 So this discrepancy in access speed necessitates a careful balance between the usage of registers and 8 00:00:41,540 --> 00:00:45,590 memory to optimize overall system performance. 9 00:00:45,590 --> 00:00:53,300 So registers represent the pinnacle of the memory hierarchy due to the their immediate accessibility 10 00:00:53,300 --> 00:00:54,560 by the processor. 11 00:00:54,560 --> 00:01:02,460 So they facilitate rapid execution of instructions by providing quick access to frequently used data. 12 00:01:02,490 --> 00:01:10,480 However, the abundance of registers is inherently limited due to the physical and design considerations. 13 00:01:10,500 --> 00:01:20,010 This limitation prompts the integration of various memory levels, each with distinct access speeds, 14 00:01:20,160 --> 00:01:21,720 capacities and costs. 15 00:01:21,720 --> 00:01:32,970 So diving deeper, we we encounter the theoretical limit of memory size, which boasts around 264 addresses. 16 00:01:33,450 --> 00:01:35,820 Let's actually open the grommet. 17 00:01:37,280 --> 00:01:40,100 And as always, throw things on the screen. 18 00:01:40,520 --> 00:01:41,540 So. 19 00:01:43,670 --> 00:01:45,710 Uh, 264 addresses. 20 00:01:45,710 --> 00:01:54,440 So to put this into perspective, this limit translates at staggering, like 16 exabytes. 21 00:01:54,950 --> 00:01:56,660 Exabytes. 22 00:01:57,820 --> 00:01:59,030 Which is a lot. 23 00:01:59,050 --> 00:02:01,280 It's 6000 exabytes of memory. 24 00:02:01,300 --> 00:02:09,520 While this figure appears remarkably large, it is vital to note that practical implementation constraints 25 00:02:09,520 --> 00:02:14,980 prevent the utilization of such a colossal memory capacity. 26 00:02:14,980 --> 00:02:22,060 And while the theoretical memory capacity seems virtually boundless or the real world, design considerations 27 00:02:22,060 --> 00:02:27,340 inevitably impose limitations on its effective utilization. 28 00:02:27,340 --> 00:02:33,230 So various factors contribute to these constraints. 29 00:02:33,250 --> 00:02:39,280 Physical space requirements, manufacturing capabilities, power consumption and cost considerations 30 00:02:39,280 --> 00:02:46,300 collectively influence the decision making process when determining memory sizes for a given system. 31 00:02:46,330 --> 00:02:53,200 Thus, the pursuit of an ideal balance between memory capacity and practicality becomes an intricate 32 00:02:53,200 --> 00:02:54,110 endeavor. 33 00:02:54,130 --> 00:02:58,810 So now what we're going to do is we will open the our. 34 00:02:59,850 --> 00:03:02,160 Chrome and see. 35 00:03:13,260 --> 00:03:17,640 What a 16 exabytes equals here. 36 00:03:23,290 --> 00:03:24,190 16. 37 00:03:26,570 --> 00:03:28,130 Bites here. 38 00:03:53,230 --> 00:04:00,270 Let's actually turn the exabytes to gigabytes and 116 exabytes to gigabytes. 39 00:04:00,280 --> 00:04:04,600 And as you can see here, this is something like this gigabytes here. 40 00:04:05,840 --> 00:04:13,490 And realizing the memory subsystem that harnesses the full potential of the theoretical memory limit 41 00:04:13,490 --> 00:04:15,080 is a formidable challenge. 42 00:04:15,080 --> 00:04:23,270 So as the memory capacities increase, new architectural innovations must emerge to address the associated 43 00:04:23,270 --> 00:04:24,260 complexities. 44 00:04:24,260 --> 00:04:31,760 So these challenges encompass efficient memory, addressing data integrity, error correction mechanisms 45 00:04:31,760 --> 00:04:36,620 and ensuring uniform access speeds across the memory hierarchy. 46 00:04:36,650 --> 00:04:42,500 Overcoming these obstacles is vital to harnessing memories to potential. 47 00:04:42,530 --> 00:04:50,750 So in conclusion, memory emerged as a cornerstone of modern computing systems functioning as a repository 48 00:04:50,750 --> 00:04:56,040 for data and instructions vital to processor operations. 49 00:04:56,060 --> 00:05:04,070 And while registers offer expedited access, the memory hierarchy accommodates the need for scalable 50 00:05:04,070 --> 00:05:05,610 storage solutions. 51 00:05:05,610 --> 00:05:13,440 Memory access governed by the addressing mechanisms navigates through different memory types, each 52 00:05:13,440 --> 00:05:16,830 tailored to specific access requirements. 53 00:05:16,830 --> 00:05:30,060 So the theoretical memory limit presents an A1 sparring figure of 604 sorry for this 264 addresses showcasing 54 00:05:30,060 --> 00:05:33,290 the man's potential for memory capacity. 55 00:05:33,300 --> 00:05:38,400 However, practical design factors such as physical limitations, manufacturing capabilities and economic 56 00:05:38,400 --> 00:05:44,180 considerations steer memory capacities towards more manageable levels. 57 00:05:44,190 --> 00:05:52,200 As we push the boundaries of computing, the pursuit of optimal memory architecture becomes a dynamic 58 00:05:52,200 --> 00:06:00,000 process requiring innovative solutions to address challenges associated with expanding memory capacities. 59 00:06:00,030 --> 00:06:06,830 By understanding the intricate interplay of memory, technical intricacies and practical constraints, 60 00:06:06,830 --> 00:06:13,580 we pave the way for enhanced computing experiences that leverage the true power of memory. 61 00:06:13,700 --> 00:06:23,300 Now we will develop an application again here 64 bit and an Nasm application here. 62 00:06:23,300 --> 00:06:24,530 Let's create a new project. 63 00:06:24,530 --> 00:06:27,980 Delete this this We will name this project as. 64 00:06:29,620 --> 00:06:37,240 Uh, memory or actually, let's make me name it our the 16 exabyte. 65 00:06:37,270 --> 00:06:45,220 Let's actually name it Exabyte here x a byte so we can remember it takes a byte more how much it how 66 00:06:45,220 --> 00:06:45,990 big is it? 67 00:06:46,000 --> 00:06:51,610 So we will create a section data section data here. 68 00:06:51,610 --> 00:06:53,500 So we will define numbers. 69 00:06:53,500 --> 00:06:57,130 We will define byte size variable, be num with the value. 70 00:06:57,160 --> 00:06:58,390 One, two, three. 71 00:06:58,430 --> 00:07:05,730 We num db one, two, three and we will define a word size variable w num with value. 72 00:07:05,740 --> 00:07:07,960 One, two, three, four five. 73 00:07:07,990 --> 00:07:14,200 We num w one, two, three, two, one, two, three, four, five. 74 00:07:14,350 --> 00:07:23,620 And we will define an array of five words and initialized to zero w array. 75 00:07:24,600 --> 00:07:28,830 Times and 5W0. 76 00:07:29,900 --> 00:07:31,370 And dinam. 77 00:07:32,900 --> 00:07:36,050 ID one, two, three, four, five. 78 00:07:36,230 --> 00:07:38,300 Here we define the. 79 00:07:39,880 --> 00:07:42,910 Let's actually make it an uppercase. 80 00:07:42,910 --> 00:07:48,670 So the D this is a double word size variable name with value. 81 00:07:48,700 --> 00:07:51,130 One, two, three, four, five. 82 00:07:51,160 --> 00:07:56,110 We will define the num one to num one. 83 00:07:56,380 --> 00:07:58,960 The Q here as well. 84 00:07:58,960 --> 00:08:00,730 One, two, three, four, five. 85 00:08:00,760 --> 00:08:01,510 We are here. 86 00:08:01,510 --> 00:08:06,460 We are defining the quadword size variable q num one with value. 87 00:08:06,460 --> 00:08:12,310 One, two, three, four, five and text one db. 88 00:08:13,680 --> 00:08:14,110 A, B. 89 00:08:14,130 --> 00:08:15,540 C here. 90 00:08:15,570 --> 00:08:16,260 Zero. 91 00:08:16,470 --> 00:08:22,110 Here we are defining a null terminated string variable text one with value. 92 00:08:22,140 --> 00:08:22,950 A, b, c. 93 00:08:26,370 --> 00:08:29,340 And the num to. 94 00:08:30,110 --> 00:08:31,370 The queue here. 95 00:08:31,400 --> 00:08:37,190 Here we will define a quadword size variable name with the value of P. 96 00:08:37,640 --> 00:08:44,180 It's actually 3.14 and 1592. 97 00:08:44,900 --> 00:08:45,470 60 for. 98 00:08:46,540 --> 00:08:46,960 Uh, no. 99 00:08:46,960 --> 00:08:47,290 Yeah. 100 00:08:47,980 --> 00:08:52,210 Uh, 92, 65 four. 101 00:08:52,360 --> 00:08:57,880 And after that, we will define a null terminated string variable text to with the value. 102 00:08:57,910 --> 00:09:01,450 See the E here. 103 00:09:03,870 --> 00:09:05,280 At the null termination as well. 104 00:09:05,280 --> 00:09:06,240 And that's it. 105 00:09:06,540 --> 00:09:08,290 We will go to section B here. 106 00:09:08,310 --> 00:09:09,450 Section. 107 00:09:10,620 --> 00:09:11,400 Action. 108 00:09:12,480 --> 00:09:16,140 And now what we're going to do is we will define four variables. 109 00:09:16,680 --> 00:09:18,600 We will reserve four variables here. 110 00:09:19,110 --> 00:09:20,130 We defined already. 111 00:09:20,160 --> 00:09:22,200 We are defining variables in data section. 112 00:09:22,470 --> 00:09:27,210 So now we will reserve one byte of space for variable. 113 00:09:27,240 --> 00:09:33,030 Be var in this section, be var rest be. 114 00:09:36,580 --> 00:09:37,240 Recipe. 115 00:09:38,620 --> 00:09:39,550 And one. 116 00:09:40,330 --> 00:09:43,450 And we will also define not defined. 117 00:09:43,480 --> 00:09:47,110 We will reserve the four bytes of space. 118 00:09:51,770 --> 00:10:00,710 We will reserve four bytes of space variable for base for variable D, var in the base section. 119 00:10:02,620 --> 00:10:03,820 And W. 120 00:10:05,870 --> 00:10:08,900 We will reserve space for an array of. 121 00:10:10,070 --> 00:10:11,540 Uh, ten words. 122 00:10:12,700 --> 00:10:17,380 Named W4 in the S section. 123 00:10:18,370 --> 00:10:18,700 As well. 124 00:10:18,700 --> 00:10:22,020 We will define a reserve keyword. 125 00:10:22,450 --> 00:10:23,440 A rest. 126 00:10:24,200 --> 00:10:25,790 Q three. 127 00:10:25,940 --> 00:10:33,800 Here we are reserving space for an array of three quad words named Q R in the spaces section as well. 128 00:10:33,800 --> 00:10:38,400 And this is the last reserve that we defined in this section. 129 00:10:38,420 --> 00:10:42,440 Now we will continue to the section text. 130 00:10:44,090 --> 00:10:47,240 And here we will define the. 131 00:10:48,310 --> 00:10:48,820 Global. 132 00:10:48,850 --> 00:10:49,450 Maine. 133 00:10:49,480 --> 00:10:50,530 Global. 134 00:10:50,920 --> 00:10:51,700 Maine. 135 00:10:54,600 --> 00:10:55,140 Main. 136 00:10:55,780 --> 00:10:57,580 And in this main here. 137 00:10:59,450 --> 00:11:00,350 RPM. 138 00:11:00,740 --> 00:11:04,940 We are pushing the value of P onto the stack. 139 00:11:04,970 --> 00:11:14,830 We will move the value of RSP into P, which is also setting up the stack frame. 140 00:11:15,200 --> 00:11:15,440 P. 141 00:11:17,500 --> 00:11:27,850 RWP rsp and we will load the memory of address this binom into rax. 142 00:11:28,900 --> 00:11:29,440 Leah. 143 00:11:31,040 --> 00:11:31,720 Racks. 144 00:11:34,890 --> 00:11:36,780 To be numb. 145 00:11:38,690 --> 00:11:42,080 And we will move the racks. 146 00:11:43,190 --> 00:11:46,970 So we will load the value stored at Benham. 147 00:11:47,900 --> 00:11:48,740 Interacts. 148 00:11:48,740 --> 00:11:58,880 But here we load the memory address of p'num interacts and now we are loading the value stored at p'num 149 00:11:58,880 --> 00:12:01,220 into Rax here. 150 00:12:05,700 --> 00:12:06,180 Venom. 151 00:12:08,510 --> 00:12:15,080 And here we will again load the value stored at memory, address stored and Bynum interacts. 152 00:12:15,080 --> 00:12:16,460 I will explain this further. 153 00:12:17,420 --> 00:12:19,730 This is new to us. 154 00:12:25,250 --> 00:12:26,630 So move. 155 00:12:27,860 --> 00:12:28,710 Bois. 156 00:12:30,600 --> 00:12:31,380 PVR. 157 00:12:32,820 --> 00:12:33,660 Racks. 158 00:12:36,550 --> 00:12:37,870 No, actually, yeah, we. 159 00:12:38,840 --> 00:12:40,280 We need to move the. 160 00:12:41,670 --> 00:12:43,860 Move the racks to. 161 00:12:47,390 --> 00:12:48,530 Leah move. 162 00:12:48,680 --> 00:12:49,190 And now. 163 00:12:49,340 --> 00:12:50,810 Yes, this is true. 164 00:12:52,220 --> 00:12:53,580 So what we did here, we. 165 00:12:53,640 --> 00:13:01,400 We loaded the value stored at memory address, which is stored in Benham into racks here again. 166 00:13:01,430 --> 00:13:06,080 Now, what we're going to do is we will move the PVR. 167 00:13:09,620 --> 00:13:09,970 We were. 168 00:13:09,980 --> 00:13:14,990 As you can see, we are using this section which we reserved in previous year in this section. 169 00:13:15,470 --> 00:13:16,060 Section. 170 00:13:16,070 --> 00:13:23,740 Now we will store the value in rax at the memory address of Bois. 171 00:13:25,070 --> 00:13:27,380 Rags and. 172 00:13:28,720 --> 00:13:30,550 We completed three move instruction here. 173 00:13:30,550 --> 00:13:35,670 Now we will use the Lia here to rax. 174 00:13:36,190 --> 00:13:41,950 We are loading the memory address of bvar into rax here. 175 00:13:43,980 --> 00:13:44,730 Racks. 176 00:13:45,660 --> 00:13:46,530 PVR. 177 00:13:46,560 --> 00:13:52,300 But remember, here we store the value in racks at the memory address before. 178 00:13:52,340 --> 00:13:58,740 Actually, if we write this command, if I write the comments here to this code, you will understand 179 00:13:58,740 --> 00:13:59,700 it better. 180 00:14:00,810 --> 00:14:03,960 Posh, the less actually it will be quicker. 181 00:14:03,990 --> 00:14:10,380 Don't worry posh the value of RVP onto the stack and. 182 00:14:13,250 --> 00:14:14,900 And here we are. 183 00:14:15,340 --> 00:14:16,430 Uh, let's see. 184 00:14:17,000 --> 00:14:19,160 We are moving the move. 185 00:14:19,630 --> 00:14:23,180 Move the value of RSP. 186 00:14:23,990 --> 00:14:26,270 Let's make it uppercase, RVP. 187 00:14:26,600 --> 00:14:32,000 So move the value of RSP into RVP, which is. 188 00:14:32,000 --> 00:14:34,760 This is the setting up the stack frame. 189 00:14:35,270 --> 00:14:37,160 And here. 190 00:14:38,300 --> 00:14:40,640 We are not. 191 00:14:41,810 --> 00:14:47,990 The memory address of numb into. 192 00:14:48,870 --> 00:14:49,710 Racks. 193 00:14:52,260 --> 00:15:00,890 And here we are telling the assembly to load the load, the value stored. 194 00:15:02,280 --> 00:15:06,180 Add venom into racks. 195 00:15:10,820 --> 00:15:14,930 Here we are telling the assembler to load. 196 00:15:15,820 --> 00:15:18,310 The value stored. 197 00:15:19,780 --> 00:15:20,260 At. 198 00:15:22,240 --> 00:15:24,070 Saw that on here and. 199 00:15:24,070 --> 00:15:24,460 Yeah. 200 00:15:24,490 --> 00:15:29,120 Load the value stored at the memory address. 201 00:15:29,140 --> 00:15:37,060 Memory address stored in penam into rax. 202 00:15:39,880 --> 00:15:48,010 And after that we we are telling the assembly to store the value in racks. 203 00:15:50,350 --> 00:15:55,780 Racks at the memory Address of Beaver. 204 00:15:58,400 --> 00:16:01,310 And after that we are telling. 205 00:16:02,020 --> 00:16:06,850 The assembly to load the load the memory address. 206 00:16:06,880 --> 00:16:15,160 Load the memory address of PVR, PVR into Rax. 207 00:16:15,340 --> 00:16:19,210 And now we will continue our code writing here. 208 00:16:19,210 --> 00:16:21,680 So we will use another instruction. 209 00:16:22,870 --> 00:16:23,770 Now we are. 210 00:16:25,670 --> 00:16:30,110 Junior here the racks to double numb. 211 00:16:32,460 --> 00:16:41,820 This is for load the memory load the memory address of w num into rax. 212 00:16:42,930 --> 00:16:44,820 Again, we will know not. 213 00:16:44,880 --> 00:16:48,900 Yes, we will load the value stored at w num into rax. 214 00:16:52,860 --> 00:16:53,730 Racks. 215 00:16:55,000 --> 00:16:56,380 W nam. 216 00:17:00,830 --> 00:17:01,910 The load. 217 00:17:01,920 --> 00:17:03,920 The value. 218 00:17:05,570 --> 00:17:10,460 Or load the so here rax w num we wrote here. 219 00:17:10,460 --> 00:17:15,050 So we loaded the memory address of the num into rax. 220 00:17:15,050 --> 00:17:19,640 But now what we're going to do is we are going to load the value. 221 00:17:21,250 --> 00:17:23,740 Go to the value part. 222 00:17:25,120 --> 00:17:33,700 In w num into rax and here we will use the Lia again because we need to tell the Assembly to load the 223 00:17:33,700 --> 00:17:37,000 memory address of text one. 224 00:17:38,100 --> 00:17:39,390 In two racks. 225 00:17:39,390 --> 00:17:39,980 Right. 226 00:17:39,990 --> 00:17:42,180 So racks. 227 00:17:44,160 --> 00:17:45,210 Text one. 228 00:17:45,900 --> 00:17:57,190 I will also add the comments load the memory memory address of text one into Rax and now we will tell 229 00:17:57,190 --> 00:18:01,440 the assembly to load the memory address of text one into. 230 00:18:02,480 --> 00:18:03,410 Racks. 231 00:18:16,880 --> 00:18:18,110 Thanks one. 232 00:18:20,110 --> 00:18:23,440 Load the memory address. 233 00:18:30,020 --> 00:18:31,910 Of text one. 234 00:18:34,560 --> 00:18:36,060 Interacts. 235 00:18:39,470 --> 00:18:43,760 And here you might be asking why the comments here is same. 236 00:18:44,300 --> 00:18:49,070 So you will learn that in when we get the output from this program. 237 00:18:50,140 --> 00:18:51,820 So don't worry about it. 238 00:18:54,430 --> 00:19:03,090 And after that we will need to load the value as the second character of Text one into Rax. 239 00:19:03,100 --> 00:19:06,610 In this case, the second character is here. 240 00:19:07,570 --> 00:19:07,930 So. 241 00:19:08,910 --> 00:19:09,640 Move there. 242 00:19:09,710 --> 00:19:10,260 Move. 243 00:19:14,020 --> 00:19:15,640 Now we will use the Mu again. 244 00:19:16,560 --> 00:19:17,550 Two racks. 245 00:19:21,340 --> 00:19:23,410 Text one plus one. 246 00:19:23,410 --> 00:19:25,720 Here we are telling the. 247 00:19:27,180 --> 00:19:30,870 The memory address of text. 248 00:19:31,500 --> 00:19:38,250 Now load the value at the second character of text. 249 00:19:38,280 --> 00:19:42,060 One one interacts. 250 00:19:44,710 --> 00:19:46,570 And we will use again. 251 00:19:47,650 --> 00:19:50,470 La Rocks here. 252 00:19:51,130 --> 00:19:56,110 And now, as we always do now, we will need to load the memory address of the second character of Text 253 00:19:56,110 --> 00:19:57,340 one into Rax. 254 00:19:57,430 --> 00:19:59,560 In order to do that, we will use this braces here. 255 00:19:59,610 --> 00:20:02,290 So text one plus one. 256 00:20:03,100 --> 00:20:04,030 What's the price? 257 00:20:04,150 --> 00:20:06,690 Now we are telling the Lord the. 258 00:20:08,020 --> 00:20:09,170 Load the memory. 259 00:20:09,180 --> 00:20:11,730 Memory address. 260 00:20:12,820 --> 00:20:14,560 Of text one. 261 00:20:17,180 --> 00:20:24,090 Memory address of text one plus one into Rax. 262 00:20:24,110 --> 00:20:25,970 Now we need to just write. 263 00:20:28,110 --> 00:20:29,520 Actually not here. 264 00:20:29,520 --> 00:20:30,960 So he wrote. 265 00:20:30,990 --> 00:20:32,160 MOV rax text one. 266 00:20:32,160 --> 00:20:36,240 So we've done this right and we use the Leah here. 267 00:20:38,320 --> 00:20:45,790 Although the memory address of the second character memory address of now loads the memory address of. 268 00:20:50,800 --> 00:20:58,570 The of the second character of text one interacts. 269 00:21:01,390 --> 00:21:05,320 And now we just need to write five more instructions. 270 00:21:05,320 --> 00:21:11,230 And we are done with this code here and in, in next lecture, we will analyze it, debug it and so 271 00:21:11,230 --> 00:21:19,660 on because the you will learn a lot from this code here about, uh, manipulating and using memories 272 00:21:19,660 --> 00:21:21,730 in assembly language. 273 00:21:21,730 --> 00:21:27,670 So after here we will need to use, uh, move here. 274 00:21:27,670 --> 00:21:29,650 So move rax. 275 00:21:32,240 --> 00:21:33,230 Next one. 276 00:21:33,260 --> 00:21:36,500 Here we are telling the assembler to load. 277 00:21:37,740 --> 00:21:40,410 The value stored. 278 00:21:41,790 --> 00:21:47,040 At the memory address of text one. 279 00:21:48,190 --> 00:21:51,100 Text one interacts. 280 00:21:52,120 --> 00:21:57,820 And after that we will use the move again to racks to load the value stored at the memory address of 281 00:21:57,820 --> 00:22:00,190 text one plus one into rax. 282 00:22:00,430 --> 00:22:01,300 So. 283 00:22:02,380 --> 00:22:03,580 Uh, text. 284 00:22:05,040 --> 00:22:07,350 X one plus one. 285 00:22:09,040 --> 00:22:12,100 You're telling the Lord the value. 286 00:22:13,040 --> 00:22:13,730 Thought. 287 00:22:14,970 --> 00:22:18,270 At the memory Memory address. 288 00:22:21,610 --> 00:22:24,520 Of text one plus. 289 00:22:27,480 --> 00:22:30,870 Text one plus one interacts. 290 00:22:33,890 --> 00:22:38,270 And now we just we will need to restore create the exit codes here. 291 00:22:38,270 --> 00:22:42,200 So RSP rbp. 292 00:22:42,860 --> 00:22:45,050 This is for restore. 293 00:22:46,590 --> 00:22:47,790 Restore. 294 00:22:48,750 --> 00:22:57,180 The value of RSP from which we need to do this for cleaning clean. 295 00:22:58,660 --> 00:23:01,330 Clean up the stack frame. 296 00:23:02,110 --> 00:23:04,720 And after that we will. 297 00:23:05,820 --> 00:23:06,390 Pop. 298 00:23:08,410 --> 00:23:10,390 Value of from the stack. 299 00:23:11,890 --> 00:23:14,860 Up the value of rb P from the stack. 300 00:23:16,370 --> 00:23:17,720 Write it up. 301 00:23:17,740 --> 00:23:22,240 The value of P from the stack. 302 00:23:23,420 --> 00:23:26,180 And now we will return from the function. 303 00:23:28,260 --> 00:23:31,020 Return from the function. 304 00:23:32,100 --> 00:23:33,210 So that's it. 305 00:23:34,440 --> 00:23:40,080 You need to develop this following program which exhibits a lack of discriminable output here. 306 00:23:40,080 --> 00:23:45,180 But we will employ a debugger to meticulously traverse each program instruction. 307 00:23:45,210 --> 00:23:51,630 This is a favorable option in the context of this employment of CSM. 308 00:23:51,810 --> 00:23:56,490 So I will explain this code in next lecture and meeting you in the next lecture.