Flash & GCC

Hello, All!

HÅ... ×ÓÅ-ÔÁËÉ ÍÏÎÓÔÒÏÉÄÁÌØÎÙÅ ËÏÎÓÔÒÕËÃÉÉ ÐÏÌÕÞÁÀÔÓÑ. éÌÉ ÞÔÏ-ÔÏ ÎÅ ÔÁË ÄÅÌÁÀ. HÁÐÒÉÍÅÒ ÅÓÔØ ÆÕÎËÃÉÑ Õ ËÏÔÏÒÏÊ ÏÄÉÎ ÉÚ ÁÒÇÕÍÅÎÔÏ× short. ôÅÐÅÒØ Ñ ÄÅÌÁÀ ÍÅÎÀÛËÕ, É ÍÎÅ ÎÁÄÏ ÐÅÒÅÄÁÔØ ÜÔÏÊ ÆÕÎËÃÉÉ short, ËÏÔÏÒÙÊ ÎÁÈÏÄÉÔÓÑ × ÏÚÕ, ÎÏ ÓÓÙÌËÁ ÎÁ ÎÅÇÏ ÎÁÈÏÄÉÔÓÑ × ÔÁÂÌÉÃÅ ×Ï ×ÌÅÛÅ. ðÒÉÈÏÄÉÔÓÑ ÐÅÒÅÄÁ×ÁÔØ ÔÁË:

*(uint16_t *)(pgm_read_word(&adr_menu->adr_number)), × ÉÁÒÅ ÂÙÌÏ ×ÓÅ-ÔÁËÉ ÐÒÏÝÅ: *adr_menu->adr-number :)

With best regards, Igor. Time: 18:14 Date: 26 éÀÎ 06

Reply to
Igor Ulanov
Loading thread data ...
ðÒÉ×ÅÔ Igor!

26 Jun 06 18:13, Igor Ulanov ÐÉÓÁÌ All:

IU> HÅ... ×ÓÅ-ÔÁËÉ ÍÏÎÓÔÒÏÉÄÁÌØÎÙÅ ËÏÎÓÔÒÕËÃÉÉ ÐÏÌÕÞÁÀÔÓÑ.

IU> *(uint16_t*)(pgm_read_word(&adr_menu->adr_number)), IU> × ÉÁÒÅ ÂÙÌÏ ×ÓÅ-ÔÁËÉ ÐÒÏÝÅ: *adr_menu->adr-number :)

éÓÐÏÌØÚÕÊ ÛÁÂÌÏÎÙ... ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... óÏÂÁËÁ - ×ÄÒÕÇ ÞÅÌÏ×ÅËÁ...
Reply to
Alex Mogilnikov

Все проблемы -- от каши в голове.

Существует два различающихся подхода по реализации C-компиляторов на платформах с несколькими раздельными адресными пространствами (например, память программ, ЭСППЗУ, ОЗУ внутреннее, ОЗУ внешнее...) Первый подразумевает, что множествнные адресные пространства -- головная боль программиста. Коиторый должен понимать, что в таком случае возможно, а что нет, что приведение типа, например, тут невозможно. Второй подход подразумевает введение некого универсального указателя, в котором бы кодировался тип памяти (конкретное адресное пространство) и "рантайм" компилятора на этапе выполнения осуществлет все преобразования. Практичэески, второй способ более удобен для программиста, а второй может давать более быстрый и короткий код.

См. выше.

Напиши макрос или функцию:

#define ee_ref(ee_addr) ({ \ inline typeof(*ee_addr) f(typeof(ee_addr) ref) { \ switch (sizeof(*ref)) { \ case 1: return pgm_read_char(&ref); \ case 2: return pgm_read_word(&ref); \ case 4: return pgm_read_dword(&ref); \ }}; *f(ee_addr); })

Используй C++ с шаблонами.

PS: О мнении Г. Шепелева относительно такого стиля кода -- догадываюсь...

PPS: -std=gnu99

Reply to
Kirill Frolov

Tue Jun 27 2006 19:44, Kirill Frolov wrote to Igor Ulanov:

KF> Все проблемы -- от каши в голове. KF> Существует два различающихся подхода по реализации C-компиляторов на KF> платформах с несколькими раздельными адресными пространствами KF> Первый KF> подразумевает, что множествнные адресные пространства -- головная боль KF> программиста. KF> Второй подход KF> подразумевает введение некого универсального указателя, в котором бы KF> кодировался тип памяти Файл = память? Интернет = память?

VLV

"Любите книги - в них видно фиги" (c)

Reply to
Vladimir Vassilevsky
Reply to
Michael Mamaev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.