IgorAVR2 1 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Как реализовать uint64_t на IAR под STM8? Как оказалось нету такого типа в нём. А unsigned long long не помог, создаёт 32 бита видимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба #include <stdint.h> не помогает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorAVR2 1 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба Нету там такого типа, все остальные есть для STM8, а 64 бита нету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 21 минуту назад, IgorAVR2 сказал: а 64 бита нету. дык создать класс int64 и переопределить операторы +- и т.д. Не ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorAVR2 1 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 8 minutes ago, megajohn said: дык создать класс int64 и переопределить операторы +- и т.д. Не ? А как это на практике? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 4 часа назад, IgorAVR2 сказал: А как это на практике? На практике: вспомнить как в школе умножали, делили в столбик. Или сейчас уже в школе так не делают? Сразу на калькуляторах? Тогда печалька... PS: Ну надеюсь хоть гуглом в школе учат пользоваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 4 часа назад, IgorAVR2 сказал: А как это на практике? вот набросок, дальше сами #include "..\My_uint64.hpp" static My_uint64 m1, m2, m3; m1 = "0123456789ABCDEF"; m2 = "FEDCBA9876543210"; m3 = m1 + m2; My_uint64.hpp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 54 minutes ago, megajohn said: вот набросок, дальше сами просто интересно, а иар вот такое объявление через строки догадается соптимизировать и сразу нужную константу в память положит, или будет честно в рантайме строку по байтам разбирать? ну и вместо unsigned char data[8]; можно было uint32_t data[2]; сделать, библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 47 минут назад, _pv сказал: библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед. у меня под рукой только AVR и библиотечная это просто ADD ADC ADC ADC .... Так что велосипед может использовать как библиотечные реализации так и ваши. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 1 час назад, _pv сказал: можно было uint32_t data[2]; сделать, библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед. STM8 - 8 битное ядро. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба stm8 ядро конечно восьмибитное, но вот у iarа для него библиотеки арифметики для uint32_t вполне есть, и при наличии оных переписывать умножение/сложение двух 64х разрядных чисел руками как массив 8ми битных чисел вместо умножений/сложений пар uint32 идея так себе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 16 мая, 2019 Опубликовано 16 мая, 2019 · Жалоба 1 минуту назад, _pv сказал: stm8 ядро конечно восьмибитное, но вот у iarа для него библиотеки арифметики для uint32_t вполне есть, и при наличии оных переписывать умножение/сложение двух 64х разрядных чисел руками как массив 8ми битных чисел вместо умножений/сложений пар uint32 идея так себе. Почему? Чем она хуже сложения массива 32-битных чисел? И уж точно складывать сразу в нативной разрядности будет однозначно быстрее использования ненужной прослойки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorAVR2 1 16 мая, 2019 Опубликовано 16 мая, 2019 (изменено) · Жалоба 5 hours ago, jcxz said: На практике: вспомнить как в школе умножали, делили в столбик. Или сейчас уже в школе так не делают? Сразу на калькуляторах? Тогда печалька... PS: Ну надеюсь хоть гуглом в школе учат пользоваться? К сожалению нам в школе запрещали калькулятором пользоваться. А теперь и сыну его не даю. А как там сейчас в школе учат я уже не знаю, уже несколько лет как домашку не проверяю - 9 класс, сам учиться! Насчёт гугла обязательно спрошу. 5 hours ago, megajohn said: вот набросок, дальше сами #include "..\My_uint64.hpp" static My_uint64 m1, m2, m3; m1 = "0123456789ABCDEF"; m2 = "FEDCBA9876543210"; m3 = m1 + m2; My_uint64.hpp Спасибо, буду вникать. Изменено 16 мая, 2019 пользователем IgorAVR2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 17 мая, 2019 Опубликовано 17 мая, 2019 · Жалоба 10 часов назад, _pv сказал: но вот у iarа для него библиотеки арифметики для uint32_t вполне есть, и при наличии оных переписывать умножение/сложение двух 64х разрядных чисел руками как массив 8ми битных чисел вместо умножений/сложений пар uint32 идея так себе. вы не понимаете следующего. библиотечная функция даст ADD ADC ADC ADC для младшего 32битного, и тоже само для старшего 32битного. Но как вы сделаете CARRIER от младшего к старшему ? я про это ADD ADC ADC ADC -> ADD ADC ADC ADC вот как раз самописная и обеспечит ADD ADC ADC ADC ADC ADC ADC ADC ADC и это не велосипед а единственное быстрое решение ( на мой взгляд, могу ошибаться, если что поправьте ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 17 мая, 2019 Опубликовано 17 мая, 2019 · Жалоба 4 hours ago, megajohn said: вот как раз самописная и обеспечит ADD ADC ADC ADC ADC ADC ADC ADC ADC и это не велосипед а единственное быстрое решение ( на мой взгляд, могу ошибаться, если что поправьте ) естественно, если правильно написать, то будет быстрее, я про тот код на С что в Вашем примере. не уверен, что так как оно написано на С, скомпилируется именно в ADD ADC ADC ADC ADC ADC ADC ADC ADC // правильней делать асмовские вставки, но мне было лень если бы ТС мог он бы таких вопросов не задавал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться