1 00:00:07,200 --> 00:00:09,100 [Powered by Google Translate] ராப் BOWDEN: நாம் கம்பைலர்களை பற்றி பேச. 2 00:00:09,100 --> 00:00:11,490 இந்த புள்ளி வரை, நீங்கள் உங்கள் மூல குறியீடு போல தட்டச்சு 3 00:00:11,490 --> 00:00:14,260 சில கோப்புகள், என்று இந்த பெரிய கருப்பு பெட்டி மூலம் அவர்களை அனுப்பி 4 00:00:14,260 --> 00:00:16,890 கணகண வென்ற சப்தம், மற்றும் அவுட் என்று உங்கள் இயங்கக்கூடிய கோப்பு வருகிறது 5 00:00:16,890 --> 00:00:19,430 சரியாக என்ன உங்கள் மூல குறியீடு எழுதினார். 6 00:00:19,430 --> 00:00:22,170 ஆகிவிட்டது என்று மந்திர என, நாம் ஒரு நெருக்கமான போகிறாய் 7 00:00:22,170 --> 00:00:23,590 உண்மையில் என்ன நடக்கிறது பாருங்கள் 8 00:00:23,590 --> 00:00:25,220 நாம் ஒரு கோப்பு தொகுக்க போது. 9 00:00:25,220 --> 00:00:28,580 அதனால் என்ன, அது ஏதோ தொகுக்க அர்த்தம்? 10 00:00:28,580 --> 00:00:31,150 >> சரி, மிகவும் பொதுவாக, அது பொருள் 11 00:00:31,150 --> 00:00:32,580 மாற்றும் குறியீடு ஒரு எழுதப்பட்ட 12 00:00:32,580 --> 00:00:34,680 மற்றொரு மொழி நிகழ்ச்சிகளை. 13 00:00:34,680 --> 00:00:37,550 ஆனால் மக்கள் என்று பொதுவாக போது அவர்கள், ஏதோ தொகுத்தல் 14 00:00:37,550 --> 00:00:39,660 அவர்கள் ஒரு உயர்ந்த நிலை நிரலாக்க இருந்து அதை எடுத்து 15 00:00:39,660 --> 00:00:42,460 குறைந்த அளவில் நிரலாக்க மொழி மொழி. 16 00:00:42,460 --> 00:00:44,960 இந்த மிக தற்சார்புடைய சொற்கள் போல தோன்றலாம். 17 00:00:44,960 --> 00:00:48,090 உதாரணமாக, நீங்கள் ஒரு உயர் போன்ற சி நினைக்கவில்லை 18 00:00:48,090 --> 00:00:51,440 நிலை நிரலாக்க மொழி, ஆனால் நீங்கள் அதை தொகுக்க வேண்டும். 19 00:00:51,440 --> 00:00:52,730 ஆனால் அது அனைத்து உறவினர். 20 00:00:52,730 --> 00:00:55,790 நாம் பார்க்கலாம் என, சட்டசபை குறியீடு மற்றும் இறுதியில் இயந்திரம் 21 00:00:55,790 --> 00:00:59,270 நாம் கீழே தொகுக்க அந்த குறியீடு undeniably குறைந்த அளவு 22 00:00:59,270 --> 00:01:00,700 சி விட 23 00:01:00,700 --> 00:01:03,310 நாம் இன்று ஆர்ப்பாட்டத்தில் கணகண வென்ற சப்தம் பயன்படுத்தி இருக்க வேண்டும் என்றாலும், ஒரு 24 00:01:03,310 --> 00:01:06,360 இங்கே கருத்துக்கள் நிறைய மற்ற கம்பைலர்களை வழியாக செல்லும். 25 00:01:06,360 --> 00:01:09,160 >> கணகண வென்ற சப்தம் செய்ய, ஒட்டுமொத்த நான்கு முக்கிய படிநிலைகள் உள்ளன 26 00:01:09,160 --> 00:01:10,200 தொகுப்பு. 27 00:01:10,200 --> 00:01:15,430 இரண்டு; இந்த ஒரு, Preprocessor செய்ய preprocessing இருக்கும் 28 00:01:15,430 --> 00:01:19,530 தொகுப்பி செய்ய தொகுப்பு; மூன்று, பூட்டு 29 00:01:19,530 --> 00:01:22,010 , மற்றும் நான்கு; அசெம்பிளர் செய்யப்படுகிறது 30 00:01:22,010 --> 00:01:24,640 இணைக்கும் தொடுப்பி செய்யப்படுகிறது. 31 00:01:24,640 --> 00:01:27,600 இது குழப்பமானதாக இருக்கலாம் என்று ஒட்டுமொத்த substeps ஒன்று 32 00:01:27,600 --> 00:01:30,980 கணகண வென்ற சப்தம் கம்பைலர்களை தொகுப்பி என்று, ஆனால் 33 00:01:30,980 --> 00:01:32,530 நாம் அது கிடைக்கும். 34 00:01:32,530 --> 00:01:35,050 நாம் உதாரணமாக ஒரு எளிய ஹலோ உலக நிரலை பயன்படுத்தி 35 00:01:35,050 --> 00:01:36,270 இந்த வீடியோ முழுவதும். 36 00:01:36,270 --> 00:01:38,380 ஒரு பார்க்கலாம். 37 00:01:38,380 --> 00:01:40,330 >> முதல் படி preprocessing உள்ளது. 38 00:01:40,330 --> 00:01:42,520 Preprocessor என்ன செய்ய? 39 00:01:42,520 --> 00:01:45,560 நீங்கள் படித்ததிலேயே அல்லது எழுதப்பட்ட நான் மிகவும் அதிகமாக ஒவ்வொரு சி திட்டத்தில், 40 00:01:45,560 --> 00:01:48,310 நீங்கள் ஒரு ஹாஷ் தொடங்கும் என்று குறியீடு வரிகளை பயன்படுத்தப்படுகிறது. 41 00:01:48,310 --> 00:01:51,730 நான் அதை ஹெஷ் அழைக்கிறேன், ஆனால் நீங்கள் அதை பவுண்டுகள், எண் கூப்பிடு 42 00:01:51,730 --> 00:01:53,280 கையெழுத்திட, அல்லது கூர்மையான. 43 00:01:53,280 --> 00:01:56,840 அத்தகைய வரி ஒரு Preprocessor உத்தரவு உள்ளது. 44 00:01:56,840 --> 00:02:00,650 ஒருவேளை நீங்கள் # முன் வரையறுத்து # அடங்கும் பார்த்து, ஆனால் அங்கு 45 00:02:00,650 --> 00:02:03,690 Preprocessor அங்கீகரிக்கிறது என்று இன்னும் பல உள்ளன. 46 00:02:03,690 --> 00:02:07,340 ஒரு # எங்கள் ஹலோ உலக உதாரணம் வரையறை சேர்க்க. 47 00:02:07,340 --> 00:02:11,690 இப்போது இந்த கோப்பு மட்டும் Preprocessor இயக்க அனுமதிக்க. 48 00:02:11,690 --> 00:02:16,150 Clage-மின் கொடி கடந்து மூலம், நீங்கள் அதை இயக்க அறிவுரைகள் 49 00:02:16,150 --> 00:02:17,880 வெறும் Preprocessor. 50 00:02:17,880 --> 00:02:19,130 என்ன நடக்கிறது என்று பார்ப்போம். 51 00:02:22,250 --> 00:02:24,020 கணகண வென்ற சப்தம் எல்லாம் வெளியே துப்புகின்றார் தெரிகிறது 52 00:02:24,020 --> 00:02:25,200 கட்டளை வரியில். 53 00:02:25,200 --> 00:02:27,800 என்று ஒரு புதிய கோப்பு இந்த வெளியீடு அனைத்து காப்பாற்ற 54 00:02:27,800 --> 00:02:33,850 hello2.c, நம் கட்டளைக்கு> hello2.c சேர்க்க வேண்டும். 55 00:02:33,850 --> 00:02:37,800 இப்போது நாம் செயல்பட தொடங்குகிறது கோப்பு பாருங்கள் நாம். 56 00:02:37,800 --> 00:02:40,810 >> ஓ, என்ன நமது குறுகிய சிறிய நிரல் என்ன நடந்தது? 57 00:02:40,810 --> 00:02:43,890 நாம் இந்த கோப்பு கீழே அனைத்து வழி சென்றால், நாம் பார்க்கலாம் 58 00:02:43,890 --> 00:02:46,070 நாம் உண்மையில் எழுதியது என்று குறியீடு சில. 59 00:02:46,070 --> 00:02:49,800 # வரையறை போய்விட்டது என்று அறிவிப்பு மற்றும் பெயர் அனைத்து நிகழ்வுகளையும் 60 00:02:49,800 --> 00:02:51,950 நாம் குறிப்பிட்ட சரியாக என்ன என மாற்றப்பட்டுள்ளது 61 00:02:51,950 --> 00:02:53,590 # வரி வரையறை. 62 00:02:53,590 --> 00:02:56,530 எனவே இந்த typedefs மற்றும் செயல்பாடு அறிவிப்புக்கள் என்ன 63 00:02:56,530 --> 00:02:58,140 கோப்பு மேலே? 64 00:02:58,140 --> 00:03:00,820 # வரையறுக்க மட்டும் Preprocessor என்று அறிவிப்பு 65 00:03:00,820 --> 00:03:02,390 நாம் குறிப்பிட்ட அந்த உத்தரவு. 66 00:03:02,390 --> 00:03:05,280 நாங்கள் # stdio.h அடங்கும். 67 00:03:05,280 --> 00:03:09,560 துடுக்கானது அனைத்து வரிகளும் தான் stdio.h நகல் உண்மையில் 68 00:03:09,560 --> 00:03:11,810 இந்த கோப்பின் மேல் நோக்கி ஒட்டப்படும். 69 00:03:11,810 --> 00:03:14,110 தலைப்பு கோப்புகள் செயல்பாடு மிகவும் பயனுள்ளதாக இருக்கும் அதனால் தான் 70 00:03:14,110 --> 00:03:15,160 அறிவிப்புக்கள். 71 00:03:15,160 --> 00:03:17,740 அதற்கு பதிலாக செயல்பாடு அனைத்து நகலெடுத்து ஒட்டவும் தேவைப்படும் என்று 72 00:03:17,740 --> 00:03:21,050 உங்கள் கோப்பின் மேல் பயன்படுத்தி திட்டமிட்டு அறிவிப்புக்கள், 73 00:03:21,050 --> 00:03:22,990 Preprocessor தலைப்பு அவற்றை நகலெடுத்து ஒட்டவும் 74 00:03:22,990 --> 00:03:24,140 நீங்கள் தாக்கல். 75 00:03:24,140 --> 00:03:26,480 >> இப்போது நாம் preprocessing செய்து, நாம் மீது நடவடிக்கை 76 00:03:26,480 --> 00:03:27,680 தொகுப்பு. 77 00:03:27,680 --> 00:03:30,725 இந்த என்பதால் இந்த நடவடிக்கை தொகுப்பு அழைக்க காரணம் 78 00:03:30,725 --> 00:03:34,130 கணகண வென்ற சப்தம் உண்மையில் அதன் சி இருந்து ஒடுக்குவதற்கான அங்கு படி 79 00:03:34,130 --> 00:03:35,370 சட்டசபை குறியீடு. 80 00:03:35,370 --> 00:03:38,280 கணகண வென்ற சப்தம் சட்டசபை ஒரு கோப்பு கீழே தொகுக்க வேண்டும், ஆனால் பொருட்டு 81 00:03:38,280 --> 00:03:42,030 மேலும் தொடர்ந்து, அதை கடந்து எஸ் கொடி 82 00:03:42,030 --> 00:03:43,560 கட்டளை வரியில். 83 00:03:43,560 --> 00:03:44,790 நாம் சட்டசபை பாருங்கள் 84 00:03:44,790 --> 00:03:47,390 கோப்பு என்று outputted. 85 00:03:47,390 --> 00:03:49,740 இது முற்றிலும் வேறுபட்ட மொழி போல். 86 00:03:49,740 --> 00:03:52,660 சட்டமன்ற குறியீடு மிக செயலி குறிப்பிட்ட ஆகும். 87 00:03:52,660 --> 00:03:55,440 இந்த வழக்கில், முதல் CS50 பயன்பாட்டிற்கான ஒரு இயங்கும் 88 00:03:55,440 --> 00:04:00,470 மெய்நிகர் x86 செயலி, இந்த x86 சட்டசபை குறியீடு உள்ளது. 89 00:04:00,470 --> 00:04:03,450 மிக சில மக்கள், இந்த நாட்களில் சட்டசபை குறியீடு நேரடியாக எழுத 90 00:04:03,450 --> 00:04:06,490 ஆனால் நீங்கள் எப்போதாவது எழுத ஒவ்வொரு சி நிரல் கீழே மாற்றம் 91 00:04:06,490 --> 00:04:07,940 சட்டசபை வரும். 92 00:04:07,940 --> 00:04:11,440 மீண்டும், நாம் சட்டமன்றத்தில் ஒரு சி ஒடுக்குவதற்கான இந்த படி அழைப்பு 93 00:04:11,440 --> 00:04:14,170 நாம் அதிக அளவில் இருந்து குறைந்த அளவில் போகிறோம் இருந்து 94 00:04:14,170 --> 00:04:15,480 மொழி நிகழ்ச்சிகளை. 95 00:04:15,480 --> 00:04:17,880 >> என்ன சி விட சட்டசபை குறைந்த அளவில் இருக்கிறது? 96 00:04:17,880 --> 00:04:21,660 நன்றாக, சட்டமன்றத்தில், நாம் மிக நாங்கள் என்ன செய்ய முடியும் என்ற மட்டுமே. 97 00:04:21,660 --> 00:04:25,120 எந்த எந்த நாட்டின் என்றால், அது போது, தான் செய்ய, அல்லது சுழல்கள் உள்ளன. 98 00:04:25,120 --> 00:04:27,560 ஆனால் அதே காரியங்களை சாதிக்க முடியும் என்று இந்த கட்டுப்பாடு 99 00:04:27,560 --> 00:04:30,270 கட்டமைப்புகள் மட்டுப்படுத்தப்பட்ட நடவடிக்கைகளை பயன்படுத்தி வழங்கும் 100 00:04:30,270 --> 00:04:32,350 சட்டசபை வழங்குகிறது. 101 00:04:32,350 --> 00:04:35,960 ஆனால் குறைந்த அளவில் சட்டசபை உண்மையில் எப்படி பார்க்க போகலாம் 102 00:04:35,960 --> 00:04:39,320 நம் தொகுப்பு மேலும் ஒரு படி, யாகும். 103 00:04:39,320 --> 00:04:41,890 அது சட்டமன்ற குறியீடு மாற்றும் அசெம்பிளர் வேலை தான் 104 00:04:41,890 --> 00:04:44,740 பொருள் அல்லது இயந்திர குறியீடு மாற்றும். 105 00:04:44,740 --> 00:04:47,610 அசெம்பிளர் வெளியீடு சட்டமன்ற இல்லை என்பதை நினைவில்; 106 00:04:47,610 --> 00:04:51,080 மாறாக, அது சட்டசபை மற்றும் வெளியீடுகளை இயந்திர குறியீடு எடுத்து. 107 00:04:51,080 --> 00:04:54,040 இயந்திர குறியீடு உண்மையான 1 மற்றும் 0 என்ற அந்த ஒரு CPU தான் முடியும் 108 00:04:54,040 --> 00:04:57,290 நாம் இன்னும் வேலை ஒரு சிறிய பிட் உள்ளது என்றாலும், புரிந்து கொள்ள 109 00:04:57,290 --> 00:04:59,380 நாம் நிரலை இயக்க முடியும் முன். 110 00:04:59,380 --> 00:05:01,400 நாம் கடந்து எங்கள் சட்டமன்ற குறியீடு வரிசைப்படுத்துங்கள் 111 00:05:01,400 --> 00:05:04,080 கணகண வென்ற சப்தம்-கேட்ச் கொடி. 112 00:05:04,080 --> 00:05:06,410 இப்போது கூடியிருந்த கோப்பில் என்ன என்று பார்ப்போம். 113 00:05:06,410 --> 00:05:09,220 >> சரி, அது மிகவும் உதவும் இல்லை. 114 00:05:09,220 --> 00:05:11,340 இயந்திர குறியீடு ஒன்றாக மற்றும் பூஜ்ஜியங்களாக என்று நினைவில் 115 00:05:11,340 --> 00:05:13,240 உங்கள் கணினி புரிந்து கொள்ள முடியும். 116 00:05:13,240 --> 00:05:16,080 அது நம்மை புரிந்து கொள்ள எளிதாக அர்த்தம் இல்லை. 117 00:05:16,080 --> 00:05:19,160 எனவே சட்டசபை எவ்வளவு குறைந்த அளவு? 118 00:05:19,160 --> 00:05:21,480 அது பொருள் குறியீடு கிட்டத்தட்ட ஒரே மாதிரியாக தான். 119 00:05:21,480 --> 00:05:24,300 சட்டமன்ற இருந்து பொருள் குறியீடு சென்று ஒரு மிக அதிகமாக உள்ளது 120 00:05:24,300 --> 00:05:27,540 ஒரு மாற்றத்தை விட மொழிபெயர்ப்பு, அது ஏன் 121 00:05:27,540 --> 00:05:29,310 ஒரு அசெம்பிளர் கருதவில்லை என்று கூறலாம் 122 00:05:29,310 --> 00:05:31,400 எந்த உண்மையான தொகுக்கப்பட்ட செய்ய. 123 00:05:31,400 --> 00:05:34,110 உண்மையில், இது கைமுறையாக இருந்து மொழிபெயர்க்க அழகாக எளிதாக 124 00:05:34,110 --> 00:05:36,050 இயந்திர குறியீட்டை சட்டசபை. 125 00:05:36,050 --> 00:05:39,040 முதல் வரி, ஒரு முக்கிய விழாவிற்கு சட்டமன்ற பார்க்க 126 00:05:39,040 --> 00:05:42,100 அறுபதின்ம 0x55 தொடர்புடைய நடக்கிறது. 127 00:05:42,100 --> 00:05:45,470 பைனரி உள்ள, அந்த 1010101 தான். 128 00:05:45,470 --> 00:05:49,300 இரண்டாவது வரி அறுபதின்ம 0x895 தொடர்ந்து நடக்கிறது. 129 00:05:49,300 --> 00:05:51,290 அடுத்த, 0x56. 130 00:05:51,290 --> 00:05:53,730 ஒரு எளிய அட்டவணை வழங்கப்பட்டது, நீங்கள் மொழிபெயர்க்க முடியும் 131 00:05:53,730 --> 00:05:57,130 இயந்திரங்கள் கூட புரிந்து கொள்ள முடியும் குறியீடு மீண்டும் சட்டசபை. 132 00:05:57,130 --> 00:05:58,810 >> எனவே ஒரு மீதமுள்ள படி இல்லை 133 00:05:58,810 --> 00:06:01,150 இணைக்கும் எந்த தொகுப்பு. 134 00:06:01,150 --> 00:06:04,530 இணைக்கும் ஒரு பெரிய கோப்பில் பொருள் கோப்புகள் ஒரு கொத்து ஒருங்கிணைக்கிறது 135 00:06:04,530 --> 00:06:06,380 நீங்கள் உண்மையில் இயக்க முடியும். 136 00:06:06,380 --> 00:06:08,570 இணைக்கும் மிக அமைப்பு சார்ந்து இருக்கும். 137 00:06:08,570 --> 00:06:11,030 ஒரு பொருள் இணைக்க கணகண வென்ற சப்தம் பெறுவது மிக எளிதான வழி 138 00:06:11,030 --> 00:06:13,920 ஒன்றாக கோப்புகளை கோப்புகளை அனைத்து கணகண வென்ற சப்தம் அழைக்க வேண்டும் 139 00:06:13,920 --> 00:06:15,190 நீங்கள் ஒன்றாக இணைக்க வேண்டும். 140 00:06:15,190 --> 00:06:18,740 நீங்கள் குறிப்பிட வேண்டும். ஓ கோப்புகள், அது, மறுசெயலாக்கம் செய்ய தேவையில்லை 141 00:06:18,740 --> 00:06:21,680 தொகுத்தல், உங்கள் மூல குறியீடு அனைத்து வரிசைப்படுத்துங்கள். 142 00:06:21,680 --> 00:06:23,960 நம்முடைய கோப்பு ஒரு கணித செயல்பாட்டை தூக்கி விட, அதனால் நாம் 143 00:06:23,960 --> 00:06:25,210 உள்ளே இணைக்க ஏதாவது 144 00:06:34,220 --> 00:06:37,010 இப்போது தான் பொருள் குறியீடு மீண்டும் அதை தொகுக்க அனுமதியுங்கள் 145 00:06:37,010 --> 00:06:38,260 இது கணகண வென்ற சப்தம் அழைப்பு. 146 00:06:40,560 --> 00:06:41,420 Oops. 147 00:06:41,420 --> 00:06:43,790 நாம் ஒரு கணித செயல்பாடு உள்ளிட்ட பின்னர், நாம் இணைக்க வேண்டும் 148 00:06:43,790 --> 00:06:46,610 கணித நூலகம் மூலம், LM. 149 00:06:46,610 --> 00:06:48,990 >> நாம் ஒரு கொத்து ஒன்றாக இணைக்க வேண்டும் என்றால். ஓ கோப்புகள் என்று நாம் 150 00:06:48,990 --> 00:06:51,420 நம் சொந்த எழுதினார், நாம் தான் அவர்களை எல்லாம் குறிப்பிட விரும்புகிறேன் 151 00:06:51,420 --> 00:06:52,460 கட்டளை வரி. 152 00:06:52,460 --> 00:06:55,320 கட்டுப்பாடு இந்த கோப்புகளை ஒரே ஒரு அவசியம் 153 00:06:55,320 --> 00:06:57,790 உண்மையில் ஒரு முக்கிய செயல்பாடு குறிப்பிட, அல்லது வேறு 154 00:06:57,790 --> 00:06:59,930 இதன் விளைவாக இயங்கக்கூடிய அங்கு தொடங்க தெரியாது 155 00:06:59,930 --> 00:07:00,910 உங்கள் குறியீடு இயங்கும். 156 00:07:00,910 --> 00:07:03,360 இணைக்க ஒரு கோப்பு குறிப்பிடாமல் என்ன வித்தியாசம் 157 00:07:03,360 --> 00:07:06,600 உடன்-l மற்றும் நேரடியாக ஒரு கோப்பு குறிப்பிடாமல்? 158 00:07:06,600 --> 00:07:07,440 எதுவும். 159 00:07:07,440 --> 00:07:09,850 அது அந்த கணகண வென்ற சப்தம் சரியாக என்ன கோப்பு என்று நடந்தால் தான் 160 00:07:09,850 --> 00:07:12,560 எதோ-LM பார்க்கவும் நடக்கிறது. 161 00:07:12,560 --> 00:07:14,700 நீங்கள் அந்த கோப்பு உங்களை தெரியும் என்றால், நீங்கள் இதை குறிப்பிட முடியும் 162 00:07:14,700 --> 00:07:15,930 வெளிப்படையாக. 163 00:07:15,930 --> 00:07:18,990 இப்போது அனைத்து எல் கொடிகள் இறுதியில் வர வேண்டும் என்று நினைவில் 164 00:07:18,990 --> 00:07:20,770 உங்கள் வாடிக்கையாளர் தேவை. 165 00:07:20,770 --> 00:07:22,300 >> மற்றும் அது அங்கே தான். 166 00:07:22,300 --> 00:07:24,940 நீங்கள் சில கோப்புகளை கணகண வென்ற சப்தம் ரன் போது, இது என்ன ஆகும் 167 00:07:24,940 --> 00:07:26,350 உண்மையில் என்ன. 168 00:07:26,350 --> 00:07:29,490 என் பெயர் ராப் Bowden, மற்றும் இந்த CS50 உள்ளது.