Зборка: 32 біт з якая плавае кропкай інструкцыі на 8-бітным чыпе

Я спрабаваў дапамагчы сябру, робячы некаторыя зборкі коды на 8 разрадным AVR чыпа (ATmega8535), але мая зборка веданне даволі тонкае і ў асноўным засяроджаны вакол сучасных чыпаў, а не некаторы састарэлае выкапень.

Так што зводзіцца да пытання аб тым, як дадаць два 32 біт з якая плавае кропкай у 8-бітнай архітэктуры, якая нават не падтрымлівае з якая плавае кропкай канкрэтных набораў каманд, такімі як FADD ...

; 3.1415926 (pi) is given by 0x40 0x49 0x0F 0xDA
; 2.7182818 (e)  is given by 0x40 0x2D 0xF8 0x54

Для зацікаўленых тут з'яўляецца тэхнічным апісаннем для чыпа ў пытанні. Набор каманд пачынаецца на старонцы 301.

0
@BlooIt ня вар'ят наогул. Да прыкладна ў канцы 80-х з якая плавае кропкай адзінак у любым ПК не былі рэдкімі і дарагімі аксэсуарамі - калі б яны былі даступныя на ўсіх. Складальнікі проста генеравацца выклікамі ў бібліятэкі, якія выкарыстоўваюцца цэлалікавымі інструкцыямі для рэалізацыі пункту матэматыкі з якая плавае. Гэта павольна, працуе проста выдатна. Нават калі вы не можаце выкарыстоўваць бібліятэку, здабывання кода з яго рабіць тое, што павінна быць зроблена, гэта шлях наперад.
дададзена аўтар Gene, крыніца
@BlooIt ня вар'ят наогул. Да прыкладна ў канцы 80-х з якая плавае кропкай адзінак у любым ПК не былі рэдкімі і дарагімі аксэсуарамі - калі б яны былі даступныя на ўсіх. Складальнікі проста генеравацца выклікамі ў бібліятэкі, якія выкарыстоўваюцца цэлалікавымі інструкцыямі для рэалізацыі пункту матэматыкі з якая плавае. Гэта павольна, працуе проста выдатна. Нават калі вы не можаце выкарыстоўваць бібліятэку, здабывання кода з яго рабіць тое, што павінна быць зроблена, гэта шлях наперад.
дададзена аўтар Gene, крыніца
8 бито AVRs з'яўляюцца сучаснымі тэхналогіямі укаранёных і далёкія ад састарэлага. Паспрабуйце атрымаць Intel 32-бітны працэсар + Крыніцы харчавання + кантролер памяці + RAM + Энерганезалежнай памяць + АЛП + паслядоўны інтэрфейс кантролера + ... у 8 вывадным корпусе для менш чым US $ 1.
дададзена аўтар JimmyB, крыніца
8 бито AVRs з'яўляюцца сучаснымі тэхналогіямі укаранёных і далёкія ад састарэлага. Паспрабуйце атрымаць Intel 32-бітны працэсар + Крыніцы харчавання + кантролер памяці + RAM + Энерганезалежнай памяць + АЛП + паслядоўны інтэрфейс кантролера + ... у 8 вывадным корпусе для менш чым US $ 1.
дададзена аўтар JimmyB, крыніца
8 бито AVRs з'яўляюцца сучаснымі тэхналогіямі укаранёных і далёкія ад састарэлага. Паспрабуйце атрымаць Intel 32-бітны працэсар + Крыніцы харчавання + кантролер памяці + RAM + Энерганезалежнай памяць + АЛП + паслядоўны інтэрфейс кантролера + ... у 8 вывадным корпусе для менш чым US $ 1.
дададзена аўтар JimmyB, крыніца
«З дапамогай знешніх бібліятэк" не варыянт? Тады гэта Excercise a.k.a хатняга задання, ці не так?
дададзена аўтар JimmyB, крыніца
«З дапамогай знешніх бібліятэк" не варыянт? Тады гэта Excercise a.k.a хатняга задання, ці не так?
дададзена аўтар JimmyB, крыніца
«З дапамогай знешніх бібліятэк" не варыянт? Тады гэта Excercise a.k.a хатняга задання, ці не так?
дададзена аўтар JimmyB, крыніца
Вы таксама можаце задаць тыя ж пытанні пра тое, як я раблю 32 бітную фіксаванай кропкай матэматыцы на 32 бітнай машыне (якую вы павінны вырашыць, калі вы хочаце зрабіць паплавок). як я памнажаць або дзяліць на машыне, якая не мае ні, ці як я раблю X бітнага множання/разрыў на машыне, якая толькі робіць Y біт. Хакеры Delight добрая кніга для асновы пра тое, як зрабіць гэтыя віды рэчаў, нароўні з ярлыкамі. Звярніце ўвагу, што калі вы вырашыце зрабіць гэта на ўсёй бібліятэцы вам трэба будзе даволі вялікі і спажываюць прыкметнае колькасць вашай памяці праграм.
дададзена аўтар old_timer, крыніца
Вы таксама можаце задаць тыя ж пытанні пра тое, як я раблю 32 бітную фіксаванай кропкай матэматыцы на 32 бітнай машыне (якую вы павінны вырашыць, калі вы хочаце зрабіць паплавок). як я памнажаць або дзяліць на машыне, якая не мае ні, ці як я раблю X бітнага множання/разрыў на машыне, якая толькі робіць Y біт. Хакеры Delight добрая кніга для асновы пра тое, як зрабіць гэтыя віды рэчаў, нароўні з ярлыкамі. Звярніце ўвагу, што калі вы вырашыце зрабіць гэта на ўсёй бібліятэцы вам трэба будзе даволі вялікі і спажываюць прыкметнае колькасць вашай памяці праграм.
дададзена аўтар old_timer, крыніца
Вы таксама можаце задаць тыя ж пытанні пра тое, як я раблю 32 бітную фіксаванай кропкай матэматыцы на 32 бітнай машыне (якую вы павінны вырашыць, калі вы хочаце зрабіць паплавок). як я памнажаць або дзяліць на машыне, якая не мае ні, ці як я раблю X бітнага множання/разрыў на машыне, якая толькі робіць Y біт. Хакеры Delight добрая кніга для асновы пра тое, як зрабіць гэтыя віды рэчаў, нароўні з ярлыкамі. Звярніце ўвагу, што калі вы вырашыце зрабіць гэта на ўсёй бібліятэцы вам трэба будзе даволі вялікі і спажываюць прыкметнае колькасць вашай памяці праграм.
дададзена аўтар old_timer, крыніца
гэта так жа, як апаратныя сродкі робяць яго, калі ў вас апаратны супрацэсара.
дададзена аўтар old_timer, крыніца
гэта так жа, як апаратныя сродкі робяць яго, калі ў вас апаратны супрацэсара.
дададзена аўтар old_timer, крыніца
гэта так жа, як апаратныя сродкі робяць яго, калі ў вас апаратны супрацэсара.
дададзена аўтар old_timer, крыніца
Сапраўды гэтак жа любая іншая фіксаваная кропка машына робіць з якая плавае кропкай матэматыцы. які гэтак жа, як вы рабілі матэматыку ў пачатковай школе. з дадатковымі вы выстройваюцца вашыя дзесятковай кропкі (паказчыкі павінны адпавядаць), зрабіць даданне. то для паплаўка вы маглі б нармалізаваць адно дзесятковы месца. у асноўным вы не збіраецеся рабіць гэтую зборку, калі вы яшчэ не ведалі, як, і нават калі вы робіце, што б з розуму, проста атрымаць крыніца ў рабочай бібліятэку і скампіляваць яго ці атрымаць аб'ект скампіляваныя бібліятэкі і звязаць яго ў і назваць яго.
дададзена аўтар old_timer, крыніца
Сапраўды гэтак жа любая іншая фіксаваная кропка машына робіць з якая плавае кропкай матэматыцы. які гэтак жа, як вы рабілі матэматыку ў пачатковай школе. з дадатковымі вы выстройваюцца вашыя дзесятковай кропкі (паказчыкі павінны адпавядаць), зрабіць даданне. то для паплаўка вы маглі б нармалізаваць адно дзесятковы месца. у асноўным вы не збіраецеся рабіць гэтую зборку, калі вы яшчэ не ведалі, як, і нават калі вы робіце, што б з розуму, проста атрымаць крыніца ў рабочай бібліятэку і скампіляваць яго ці атрымаць аб'ект скампіляваныя бібліятэкі і звязаць яго ў і назваць яго.
дададзена аўтар old_timer, крыніца
Сапраўды гэтак жа любая іншая фіксаваная кропка машына робіць з якая плавае кропкай матэматыцы. які гэтак жа, як вы рабілі матэматыку ў пачатковай школе. з дадатковымі вы выстройваюцца вашыя дзесятковай кропкі (паказчыкі павінны адпавядаць), зрабіць даданне. то для паплаўка вы маглі б нармалізаваць адно дзесятковы месца. у асноўным вы не збіраецеся рабіць гэтую зборку, калі вы яшчэ не ведалі, як, і нават калі вы робіце, што б з розуму, проста атрымаць крыніца ў рабочай бібліятэку і скампіляваць яго ці атрымаць аб'ект скампіляваныя бібліятэкі і звязаць яго ў і назваць яго.
дададзена аўтар old_timer, крыніца
дададзена аўтар ssnobody, крыніца
дададзена аўтар ssnobody, крыніца
дададзена аўтар ssnobody, крыніца
Калі вы не прывыклі да 754 32 бітных лікаў IEEE FP (я мяркую, што гэта фармат), я прапаную вам зірнуць на тое, як яны прадстаўлены, паспрабуйце некаторыя дадання ўручную, а затым рэалізаваць алгарытм ў C, выкарыстоўваючы толькі паўкокс дадзеныя тыпу, то пераўтварэнне ў зборку. Калі гэта не з'яўляецца хатнім заданнем або падобным, то вы можаце шукаць кампілятар для старога чыпа AVR, гэта дазволіць вам код у C (аднак усё задавальненне знікне).
дададзена аўтар user781847, крыніца
Калі вы не прывыклі да 754 32 бітных лікаў IEEE FP (я мяркую, што гэта фармат), я прапаную вам зірнуць на тое, як яны прадстаўлены, паспрабуйце некаторыя дадання ўручную, а затым рэалізаваць алгарытм ў C, выкарыстоўваючы толькі паўкокс дадзеныя тыпу, то пераўтварэнне ў зборку. Калі гэта не з'яўляецца хатнім заданнем або падобным, то вы можаце шукаць кампілятар для старога чыпа AVR, гэта дазволіць вам код у C (аднак усё задавальненне знікне).
дададзена аўтар user781847, крыніца
Калі вы не прывыклі да 754 32 бітных лікаў IEEE FP (я мяркую, што гэта фармат), я прапаную вам зірнуць на тое, як яны прадстаўлены, паспрабуйце некаторыя дадання ўручную, а затым рэалізаваць алгарытм ў C, выкарыстоўваючы толькі паўкокс дадзеныя тыпу, то пераўтварэнне ў зборку. Калі гэта не з'яўляецца хатнім заданнем або падобным, то вы можаце шукаць кампілятар для старога чыпа AVR, гэта дазволіць вам код у C (аднак усё задавальненне знікне).
дададзена аўтар user781847, крыніца
На жаль, задача складаецца ў тым, каб ён зрабіць у гэтым састарэлым 8 разрадным AVR, як вар'яты, як гэта гучыць, няма ніякага спосабу вакол яго (напрыклад, злучэння або з дапамогай знешніх бібліятэк).
дададзена аўтар Alhamza Alnaimi, крыніца
На жаль, задача складаецца ў тым, каб ён зрабіць у гэтым састарэлым 8 разрадным AVR, як вар'яты, як гэта гучыць, няма ніякага спосабу вакол яго (напрыклад, злучэння або з дапамогай знешніх бібліятэк).
дададзена аўтар Alhamza Alnaimi, крыніца
На жаль, задача складаецца ў тым, каб ён зрабіць у гэтым састарэлым 8 разрадным AVR, як вар'яты, як гэта гучыць, няма ніякага спосабу вакол яго (напрыклад, злучэння або з дапамогай знешніх бібліятэк).
дададзена аўтар Alhamza Alnaimi, крыніца

6 адказы

я думаю, што ў вас ёсць наступныя варыянты:

  • look at the avr-libc for implementation details
  • write your program in c.
    I bet that avr-gcc writes better (in terms of efficiency and correctness) assembly code than you
  • use an easier number format. eg:

Акрамя таго, добры крыніца для базавага разумення з'яўляецца наступная кніга:

«Кіраўніцтва па праграмным забеспячэнні для элементарных функцый" Уільям Дж Cody, William Уэйт

Ён паказвае, як рэалізаваць розную (таксама базавую) аперацыю і алгарытмы толькі з арыфметыкай на аснове цэлалікавай.

3
дададзена
Калі выказаць здагадку, што OP патрэбу хатняе заданне зрабіць, гэта сапраўды вялікі адказ, каб дапамагчы яму даведацца, што яму трэба. +1
дададзена аўтар JimmyB, крыніца

я думаю, што ў вас ёсць наступныя варыянты:

  • look at the avr-libc for implementation details
  • write your program in c.
    I bet that avr-gcc writes better (in terms of efficiency and correctness) assembly code than you
  • use an easier number format. eg:

Акрамя таго, добры крыніца для базавага разумення з'яўляецца наступная кніга:

«Кіраўніцтва па праграмным забеспячэнні для элементарных функцый" Уільям Дж Cody, William Уэйт

Ён паказвае, як рэалізаваць розную (таксама базавую) аперацыю і алгарытмы толькі з арыфметыкай на аснове цэлалікавай.

3
дададзена
Калі выказаць здагадку, што OP патрэбу хатняе заданне зрабіць, гэта сапраўды вялікі адказ, каб дапамагчы яму даведацца, што яму трэба. +1
дададзена аўтар JimmyB, крыніца

я думаю, што ў вас ёсць наступныя варыянты:

  • look at the avr-libc for implementation details
  • write your program in c.
    I bet that avr-gcc writes better (in terms of efficiency and correctness) assembly code than you
  • use an easier number format. eg:

Акрамя таго, добры крыніца для базавага разумення з'яўляецца наступная кніга:

«Кіраўніцтва па праграмным забеспячэнні для элементарных функцый" Уільям Дж Cody, William Уэйт

Ён паказвае, як рэалізаваць розную (таксама базавую) аперацыю і алгарытмы толькі з арыфметыкай на аснове цэлалікавай.

3
дададзена
Калі выказаць здагадку, што OP патрэбу хатняе заданне зрабіць, гэта сапраўды вялікі адказ, каб дапамагчы яму даведацца, што яму трэба. +1
дададзена аўтар JimmyB, крыніца
<�Р> Такім чынам, гэта зводзіцца да пытання аб тым, як дадаць два 32 біт з якая плавае кропкай у 8-бітнай архітэктуры, якая нават не падтрымлівае з якая плавае кропкай канкрэтных набораў каманд, такімі як FADD

The avr-libc library does it like this. Therefore you should too.

2
дададзена
<�Р> Такім чынам, гэта зводзіцца да пытання аб тым, як дадаць два 32 біт з якая плавае кропкай у 8-бітнай архітэктуры, якая нават не падтрымлівае з якая плавае кропкай канкрэтных набораў каманд, такімі як FADD

The avr-libc library does it like this. Therefore you should too.

2
дададзена
<�Р> Такім чынам, гэта зводзіцца да пытання аб тым, як дадаць два 32 біт з якая плавае кропкай у 8-бітнай архітэктуры, якая нават не падтрымлівае з якая плавае кропкай канкрэтных набораў каманд, такімі як FADD

The avr-libc library does it like this. Therefore you should too.

2
дададзена