| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Във връзка с темата за C http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=222 |
Страница 1 от 2 |
| Автор: | Реконструктор [ Пон Дек 13, 2004 1:24 pm ] | |||||||||
| Заглавие: | Във връзка с темата за C | |||||||||
Може ли някой, който работи с PIC да направи следният експеримент. Да компилира (с изключени оптимизации) следният код:
Да го дезасемблира и да постне кода тука |
||||||||||
| Автор: | Nikola Kirov [ Пон Дек 13, 2004 3:28 pm ] |
| Заглавие: | |
Довечера ще ти го направя сега съм на другия комп. |
|
| Автор: | Nikola Kirov [ Вто Дек 14, 2004 12:45 am ] |
| Заглавие: | |
С Hi-tech съм направил компилацията. void Test() { long n = 424242; long* p; p = &n; *p=0; } А това е дизасемблираната програма 353 void Test() 354: { 0001E9 3032 MOVLW 0x32 355: long n = 424242; 0001EA 1283 BCF 0x3, 0x5 0001EB 094 MOVWF 0x14 0001EC 3079 MOVLW 0x79 0001ED 095 MOVWF 0x15 0001EE 3006 MOVLW 0x6 0001EF 096 MOVWF 0x16 0001F0 197 CLRF 0x17 356: long* p; 357: 358: p = &n; 0001F1 3014 MOVLW 0x14 0001F2 093 MOVWF 0x13 359: 360: *p=0; 0001F3 084 MOVWF 0x4 0001F4 3000 MOVLW 0 0001F5 180 CLRF 0 0001F6 A84 INCF 0x4, F 0001F7 180 CLRF 0 0001F8 A84 INCF 0x4, F 0001F9 180 CLRF 0 0001FA A84 INCF 0x4, F 0001FB 180 CLRF 0 361: } 0001FC 008 RETURN Надявам се да не съм закъснял много |
|
| Автор: | Реконструктор [ Вто Дек 14, 2004 10:06 am ] |
| Заглавие: | |
Тва за кой PIC е? |
|
| Автор: | Nikola Kirov [ Вто Дек 14, 2004 10:51 pm ] |
| Заглавие: | |
za 16F84 |
|
| Автор: | Реконструктор [ Сря Дек 15, 2004 9:11 pm ] |
| Заглавие: | |
А къде е превключването на банките? |
|
| Автор: | ToHu [ Съб Дек 18, 2004 8:59 pm ] |
| Заглавие: | |
А за какво ти е тук превключване на банките ?void Test() .................... { .................... long n = 424242; 0004: MOVLW 32 0005: MOVWF 12 0006: MOVLW 79 0007: MOVWF 13 .................... long* p; .................... .................... p = &n; 0008: MOVLW 12 0009: MOVWF 14 .................... .................... *p=0; 000A: MOVF 14,W 000B: MOVWF 04 000C: INCF 04,F 000D: CLRF 00 000E: DECF 04,F 000F: CLRF 00 .................... } 0010: GOTO 01B (RETURN) ето това прави CCS, сложено е като функция ....затова има return, ама е inline функция |
|
| Автор: | Реконструктор [ Нед Дек 19, 2004 12:04 am ] |
| Заглавие: | |
Тая променлива къде е? |
|
| Автор: | bateAz [ Нед Дек 19, 2004 12:29 am ] |
| Заглавие: | |
За вътрешна информация : тъпото CCS си мисли че : INT = 8 bits, LONG = 16 bits. Ако искаш да стане "нормален" трябва да му сложиш най-отпред директива, не помня каква беше. Та твоят LONG е отрязан до 16 бита и това, което е останало е напъхано в клетки 0x12 и 0x13. Поне така ми изглежда на мене. |
|
| Автор: | ToHu [ Нед Дек 19, 2004 8:49 am ] |
| Заглавие: | |
А да така прави, ам и аз придобих неговото мислене void Test() .................... { .................... int32 n = 424242; 0004: MOVLW 32 0005: MOVWF 12 0006: MOVLW 79 0007: MOVWF 13 0008: MOVLW 06 0009: MOVWF 14 000A: CLRF 15 .................... int32* p; .................... .................... p = &n; 000B: MOVLW 12 000C: MOVWF 16 .................... .................... *p=0; 000D: MOVF 16,W 000E: MOVWF 04 000F: INCF 04,F 0010: INCF 04,F 0011: INCF 04,F 0012: CLRF 00 0013: DECF 04,F 0014: CLRF 00 0015: DECF 04,F 0016: CLRF 00 0017: DECF 04,F 0018: CLRF 00 .................... } 0019: GOTO 024 (RETURN) 012-015 Test.n 016 Test.p 017 Test.@SCRATCH |
|
| Автор: | Nikola Kirov [ Нед Дек 19, 2004 2:11 pm ] |
| Заглавие: | |
Така може,не погледнах за какво става дума и се бях притеснил че Hi-Tech нещо прави много раздут код в случая но .... успокоих се |
|
| Автор: | Реконструктор [ Нед Дек 19, 2004 2:15 pm ] |
| Заглавие: | |
Добре де, ако тия променливи са в паметта, не трябва ли да се извършва превключване на банките, където се намират? |
|
| Автор: | bateAz [ Нед Дек 19, 2004 2:35 pm ] |
| Заглавие: | |
Приема се , че са в една банка. Ако се раздуе програмата и поиска повече RAM, тогава ще се появят "банкерите" |
|
| Автор: | Реконструктор [ Нед Дек 19, 2004 2:38 pm ] |
| Заглавие: | |
Добре, тогава нека разширим експеримента - преди въпросният код сложете превключване към някоя друга банка, да видим какво ще измисли компилаторът. |
|
| Автор: | Nikola Kirov [ Нед Дек 19, 2004 2:59 pm ] |
| Заглавие: | |
ne e li po lesno da kajesh kwo tochno te interesuwa da ti go obqsnim |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|