Jump to content

    
Sign in to follow this  
IgorAVR2

IAR STM8 - uint64_t

Recommended Posts

4 часа назад, IgorAVR2 сказал:

А как это на практике?

На практике: вспомнить как в школе умножали, делили в столбик. Или сейчас уже в школе так не делают? Сразу на калькуляторах? Тогда печалька... :cray:

PS: Ну надеюсь хоть гуглом в школе учат пользоваться?

Share this post


Link to post
Share on other sites
4 часа назад, IgorAVR2 сказал:

А как это на практике?

 

вот набросок, дальше сами
 

#include "..\My_uint64.hpp"

static My_uint64  m1, m2, m3;

    m1 = "0123456789ABCDEF";
    m2 = "FEDCBA9876543210";
    m3 = m1 + m2;

 

My_uint64.hpp

Share this post


Link to post
Share on other sites
54 minutes ago, megajohn said:

вот набросок, дальше сами

просто интересно, а иар вот такое объявление через строки догадается соптимизировать и сразу нужную константу в память положит, или будет честно в рантайме строку по байтам разбирать?

ну и вместо unsigned char data[8]; можно было uint32_t data[2]; сделать, библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед.

Share this post


Link to post
Share on other sites
47 минут назад, _pv сказал:

библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед.

у меня под рукой только AVR и библиотечная это просто ADD ADC ADC ADC ....  Так что велосипед может использовать как библиотечные реализации так и ваши.

Share this post


Link to post
Share on other sites
1 час назад, _pv сказал:

можно было uint32_t data[2]; сделать, библиотечная арифметка для 32х разрядов будет быстрее чем очередной велосипед.

STM8 - 8 битное ядро.

Share this post


Link to post
Share on other sites

stm8 ядро конечно восьмибитное, но вот у iarа для него библиотеки арифметики для uint32_t вполне есть, и при наличии оных переписывать умножение/сложение двух 64х разрядных чисел руками как массив 8ми битных чисел вместо умножений/сложений пар uint32 идея так себе.

Share this post


Link to post
Share on other sites
1 минуту назад, _pv сказал:

stm8 ядро конечно восьмибитное, но вот у iarа для него библиотеки арифметики для uint32_t вполне есть, и при наличии оных переписывать умножение/сложение двух 64х разрядных чисел руками как массив 8ми битных чисел вместо умножений/сложений пар uint32 идея так себе.

Почему? Чем она хуже сложения массива 32-битных чисел? И уж точно складывать сразу в нативной разрядности будет однозначно быстрее использования ненужной прослойки.

Share this post


Link to post
Share on other sites
5 hours ago, jcxz said:

На практике: вспомнить как в школе умножали, делили в столбик. Или сейчас уже в школе так не делают? Сразу на калькуляторах? Тогда печалька... :cray:

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

Спасибо, буду вникать.

Edited by IgorAVR2

Share this post


Link to post
Share on other sites
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

 и это не велосипед а единственное быстрое решение ( на мой взгляд, могу ошибаться, если что поправьте )

 

Share this post


Link to post
Share on other sites
4 hours ago, megajohn said:

вот как раз самописная и обеспечит

ADD ADC ADC ADC ADC ADC ADC ADC ADC

  и это не велосипед а единственное быстрое решение ( на мой взгляд, могу ошибаться, если что поправьте )

естественно, если правильно написать, то будет быстрее, я про тот код на С что в Вашем примере.

не уверен, что так как оно написано на С, скомпилируется именно в ADD ADC ADC ADC ADC ADC ADC ADC ADC

// правильней делать асмовские вставки, но мне было лень

если бы ТС мог он бы таких вопросов не задавал.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this