в моём gcc всё оказалось гораздо прозаичней (и хуже), я сразу не догадался посмотреть на представление. double (long long) если его представить как msw(32 бита):lsw(32 бита) ложится
msw на младшие адреса, lsw на старшие, т.е. 10.0 0x2001BE88 = 0x40240000 0x2001BE8C = 0x00000000
у IAR'а ложится наоборот 0x2001BE88 = 0x00000000 0x2001BE8C = 0x40240000
и это всё little-endian.
а в итоге вызов функции не влияет, т.к. если посмотреть дизассемблер, то вызов функции это две инструкции - ldm и bl, которые отрабатывают правильно, как я и говорил постом выше.
|