1 00:00:00,060 --> 00:00:08,100 So now we are going to learn something important topic which will be helpful for our covering, and 2 00:00:08,310 --> 00:00:10,320 that topic is Causby Registers. 3 00:00:11,740 --> 00:00:20,290 CPU contents, a memory to store some data for operations, so why do you need to store some memory 4 00:00:20,680 --> 00:00:21,280 in its. 5 00:00:26,280 --> 00:00:33,600 Why does CBO need to store some data in its memory for operations, because getting the value from this 6 00:00:33,600 --> 00:00:35,340 car from memory is time consuming. 7 00:00:35,700 --> 00:00:37,250 So take an example. 8 00:00:37,620 --> 00:00:45,510 If your application is accessing a file or an image that is on the hard disk or from memory, if you 9 00:00:46,320 --> 00:00:48,980 if it's accessing one time, it will be OK. 10 00:00:48,990 --> 00:00:54,690 But if it's accessing so many times, then you have to go to that disk and from memory. 11 00:00:54,900 --> 00:01:00,540 And it would be very time consuming because it's multiple passes, multiple. 12 00:01:02,490 --> 00:01:11,370 Times it need to exist, so that's why C.P.U contains some memory locations, which are called registers, 13 00:01:11,550 --> 00:01:19,380 and you can use the registers to perform computations and computation since the details are fresh because 14 00:01:20,160 --> 00:01:24,620 they already stored in registers and people can simply perform the operation. 15 00:01:25,230 --> 00:01:32,220 And also, these are not permanent memory shortages after the program has been completed or even done. 16 00:01:32,640 --> 00:01:40,830 When you're debugging these registers where it's going to be changed to the basics of what the security 17 00:01:40,830 --> 00:01:46,050 tasks and we are also going to learn about general-purpose registers. 18 00:01:47,040 --> 00:01:49,890 So let's see, what are these general-purpose registers? 19 00:01:51,120 --> 00:01:54,370 So there are some registers which are used for general purpose. 20 00:01:54,810 --> 00:01:59,400 Sarposa It's easier to corrugations return values from functions. 21 00:02:00,900 --> 00:02:06,930 Generally, if you use it for calculations like arithmetic operations and multiplication operations, 22 00:02:07,380 --> 00:02:10,500 and also it's used to store the values from functions. 23 00:02:10,860 --> 00:02:15,870 If you have a function after the function ends, there will be a return value. 24 00:02:16,140 --> 00:02:21,170 And when the function has been completed, the recovery will be stored in X register. 25 00:02:22,980 --> 00:02:31,840 And that makes it easy user to point starting off, so Ebix is called base pointer, and yet you got 26 00:02:31,860 --> 00:02:32,950 a complete register. 27 00:02:33,780 --> 00:02:40,980 So this base pointer is pointing to the base of that means starting element of an area. 28 00:02:41,820 --> 00:02:44,070 And why do this? 29 00:02:44,610 --> 00:02:46,620 We point to the starting of another means. 30 00:02:47,140 --> 00:02:55,560 If we expand the starting of an area, we can point to some other register to access next element or 31 00:02:55,560 --> 00:02:56,700 further elements of an. 32 00:02:57,480 --> 00:03:03,610 So we can say we express one, two is secondary and if we express three to access water and so on. 33 00:03:03,870 --> 00:03:09,890 So here is the exponential starting of an area so that you can access all the elements in that area 34 00:03:09,900 --> 00:03:12,390 by just simply looping over it. 35 00:03:14,220 --> 00:03:21,390 And then actually you see a creature which is called concreter and it is as iterator in loop operations 36 00:03:22,770 --> 00:03:30,510 generally we through orany Eisentrager, but in assembly we use the concreter. 37 00:03:32,730 --> 00:03:37,030 And UTX, registered user for our normal operations. 38 00:03:37,590 --> 00:03:47,190 That means if you are taking any input and just you can shorten UTX and also if there are there is an 39 00:03:47,190 --> 00:03:54,030 awful lot of data in the registers, the hires that you do with such coding edicts and alert that you 40 00:03:54,600 --> 00:03:58,140 are certain you don't worry will be doing this. 41 00:03:58,140 --> 00:04:03,090 And we will observe how that data will be shared among election idiots. 42 00:04:04,020 --> 00:04:12,570 Now, EASA stands for Saux Index, which you could point source open and update for the nation index, 43 00:04:13,050 --> 00:04:15,150 which is used to point destination over. 44 00:04:15,390 --> 00:04:21,570 So these two registers are generally used in string operations like two like. 45 00:04:21,570 --> 00:04:26,250 So EASA points to the source string and it points to the destination string. 46 00:04:28,440 --> 00:04:31,830 Now we'll be looking at the structure of this resistance. 47 00:04:33,410 --> 00:04:43,220 And if you take a look at this, this full digital space is 32 bits right now that control X, and there 48 00:04:43,220 --> 00:04:51,720 is one option to access particular 15 bits of those of the pigs, that is to call it X. 49 00:04:53,000 --> 00:04:54,600 So this is called extended. 50 00:04:55,670 --> 00:04:57,870 This is called a community register. 51 00:04:58,160 --> 00:05:04,640 So if we call X, then we refer to the lower sixteen bits of the X. 52 00:05:05,190 --> 00:05:13,820 Of course, you could hear that little bits by X and this X is the realistic Timbits and this little 53 00:05:14,480 --> 00:05:21,720 bits of X can be further into the two parts here, a lower rate, which this is also called a corridor 54 00:05:21,720 --> 00:05:22,090 here. 55 00:05:22,100 --> 00:05:23,690 And this is also correct. 56 00:05:25,520 --> 00:05:33,250 So if we want to access only Fereshteh bits, that means a piece of X we say yeah. 57 00:05:33,770 --> 00:05:42,110 And if we want to access higher rate bits, we say, which are we want to access, which then we say 58 00:05:42,110 --> 00:05:51,800 X, or if you want to actually start to the which we say generally X the same way you do, X also can 59 00:05:51,800 --> 00:05:57,430 be divided as D, D, D, D and so on. 60 00:05:57,830 --> 00:06:02,820 But this source index and the index cannot be divided like that. 61 00:06:03,650 --> 00:06:10,970 So here there are two other resistors, E.S.P and EVP and will be talking about this in the stack concept. 62 00:06:11,930 --> 00:06:12,710 Just for now. 63 00:06:12,710 --> 00:06:18,530 I'm just skipping this and there is another concept called Extended Flaks. 64 00:06:19,550 --> 00:06:24,960 So these are some flags which are set when an operation is performed. 65 00:06:26,000 --> 00:06:33,470 So there are so many flags here carrying flag bearer, the flag and so on will be discussing more important 66 00:06:33,470 --> 00:06:35,290 ones, which will be useful for us. 67 00:06:36,380 --> 00:06:42,680 I will be showing some examples, guess in the coding point of view. 68 00:06:44,890 --> 00:06:49,910 I mean, in the coding session now, these flags are set when an operation has been performed. 69 00:06:50,440 --> 00:06:57,370 So when they do subtraction between two numbers, if those two numbers are the same, the result will 70 00:06:57,370 --> 00:06:57,920 be zero. 71 00:06:58,540 --> 00:07:01,620 So that result will not be scored anywhere. 72 00:07:01,870 --> 00:07:09,010 But this will set one if the result of the previous operation is zero. 73 00:07:10,720 --> 00:07:14,890 And we can check this out if this operation is GIRoA or not. 74 00:07:16,270 --> 00:07:20,530 And in the same way, we can say all four of that to reflect that. 75 00:07:20,560 --> 00:07:26,660 In fact, if there is any additional operation that leads to carry, then kind of like you said. 76 00:07:27,370 --> 00:07:30,280 So these are like flags. 77 00:07:30,760 --> 00:07:32,300 They're always Ejiro. 78 00:07:33,690 --> 00:07:39,860 And they will be set to one if any operation led to this flag.