Grumbler_2002 0 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Надо сдвинуть 32-битный регистр и использовать потом старшее и младшее слова этого регистра. Ума не приложу, как сделать это из Си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Ума не приложу о чем это :(? Начните со сдвигов - постой? циклический? Дальше - сдвинули что-то как-то куда-то как-то. Что после этого мешает продолжать "использовать" что-то. short hi = reg>>16; short lo = (short)reg; Или мы о чем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Эквивалент R0<<=1; R1=Op(R0.h); R2=Op(R0.l); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Эквивалент R0<<=1; R1=Op(R0.h); R2=Op(R0.l); reg <<= 1; short hi = reg>>16; short lo = (short)reg; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба И че, компилятор рюхнет, что сдвигать reg не надо, а надо взять его старшую часть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба И че, компилятор рюхнет, что сдвигать reg не надо, а надо взять его старшую часть? Это уже от компилятора зависит. Приличные обычно разбираются. В стандартном "C" других путей нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Надо сдвинуть 32-битный регистр и использовать потом старшее и младшее слова этого регистра. Ума не приложу, как сделать это из Си. Это чё прикол такой новый ????? Если нет, то смотри далее /******************************************************************** unsigned u_reg = 0x1111; // (например, двигаем регистр "0001000100010001" (bin) unsigned short u_reg1=0x00,u_reg2=0x00; // на сколько бит сдвигаем и куда????????? // например, на 1 бит влево u_reg <= 1; // "0010001000100010" // старшее слово u_reg1 = (unsigned short)((u_reg&0xff00)>>16); // "00100010" // младшее слово u_reg2 = (unsigned short)(u_reg&0xff); // "00100010" *********************************************************************/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 26 апреля, 2007 Опубликовано 26 апреля, 2007 · Жалоба Если нет, то смотри далее &0xff00 и &0xff 1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить; 2. Вообще не нужны ввиду полной нахренненужности. Явная инициализация переменных нулями тоже совсем никчему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба &0xff00 и &0xff 1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить; 2. Вообще не нужны ввиду полной нахренненужности. Явная инициализация переменных нулями тоже совсем никчему. по первому пункту согласен, тут я сам напорол косяков :) , а что касается наложений масок и начальной инициализации, то это считается хорошим тоном, да и вообще лишний раз подстраховаться не помешает. &0xff00 и &0xff 1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить; 2. Вообще не нужны ввиду полной нахренненужности. Явная инициализация переменных нулями тоже совсем никчему. по первому пункту согласен, тут я сам напорол косяков :) - сыграл человеческий фактор, а что касается наложений масок и начальной инициализации, то это считается хорошим тоном, да и вообще лишний раз подстраховаться не помешает, а то бывали случаи, что сидишь в отладчике сутками, не можешь ошибку выявить, а оказывается где-то что-то не обнулил или еще что-то подобное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба а что касается наложений масок и начальной инициализации, то это считается хорошим тоном Хорошим тоном является не писать абсолютно лишнего и бесполезного кода, который кто-то будет читать и отвлекаться на поиски отсутствующего :( смысла в оном. Ну и заодно "косяков" сами не напорете при его написании, превратив бесполезный во вредный. да и вообще лишний раз подстраховаться не помешает От желания "подстраховаться" хорошо помогает изучение языка программирования а не чтение правил хорошего тона и чужих неведомо кем писанных исходников выложеных в интернет по причине их полной "бесценности" :). Практически единственным средством (не то, что-бы подстраховки, а средством облегчения чтения), пожалуй, в "C" следует признать использование скобок для подчеркивания приоритетов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grumbler_2002 0 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба Нашел всё, что нужно было. Есть тип int2x16 и встроенные типы __built_in_lo/__built_in_hi. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба Хорошим тоном является не писать абсолютно лишнего и бесполезного кода, который кто-то будет читать и отвлекаться на поиски отсутствующего :( смысла в оном. Ну и заодно "косяков" сами не напорете при его написании, превратив бесполезный во вредный. От желания "подстраховаться" хорошо помогает изучение языка программирования а не чтение правил хорошего тона и чужих неведомо кем писанных исходников выложеных в интернет по причине их полной "бесценности" :). Практически единственным средством (не то, что-бы подстраховки, а средством облегчения чтения), пожалуй, в "C" следует признать использование скобок для подчеркивания приоритетов. По всей видимости, Вы не сталкивались с данными ситуациями, а значит либо мало кодите, либо так все обходилось, ибо не бывает кода без ошибок. Дай Бог Вам счастья и в дальнейшем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба По всей видимости, Вы не сталкивались с данными ситуациями, а значит либо мало кодите, либо так все обходилось... На так, авось и вдруг не надеюсь. Я знаю что я делаю и какими средствами пользуюсь. Просто минимальный профессионализм. Если Вы вдруг сталкивались - просветите насчет "инструмента" который вдруг позволил выдать разный результат на: unsigned short u_reg1 = 0; unsigned short u_reg2 = 0; u_reg1 = (unsigned short)((u_reg&0xffff0000)>>16); u_reg2 = (unsigned short)(u_reg&0xffff); и unsigned short u_reg1; unsigned short u_reg2; u_reg1 = (unsigned short)(u_reg>>16); u_reg2 = (unsigned short)u_reg; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serg76 0 27 апреля, 2007 Опубликовано 27 апреля, 2007 · Жалоба На так, авось и вдруг не надеюсь. Я знаю что я делаю и какими средствами пользуюсь. Просто минимальный профессионализм. Если Вы вдруг сталкивались - просветите насчет "инструмента" который вдруг позволил выдать разный результат на: unsigned short u_reg1 = 0; unsigned short u_reg2 = 0; u_reg1 = (unsigned short)((u_reg&0xffff0000)>>16); u_reg2 = (unsigned short)(u_reg&0xffff); и unsigned short u_reg1; unsigned short u_reg2; u_reg1 = (unsigned short)(u_reg>>16); u_reg2 = (unsigned short)u_reg; В этом случае результаты будут, конечно же, идентичны, но у меня это уже дело привычки, и поверьте лучше все-таки переменные инициализировать, тогда и переживать не придёться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 28 апреля, 2007 Опубликовано 28 апреля, 2007 · Жалоба и поверьте лучше все-таки переменные инициализировать, тогда и переживать не придёться. 1. Инициализацию глобальных переменных я всегда указываю делать компилятору (кстати, не встречал компилятора, где это не было-бы опцией по умолчанию). Это ему делать много сподручнее и главное абсолютно надежно, в отличие от ручного прописывания каждой переменной. Не говоря уже о лишнем коде получающемся при этом. 2. Инициализация локальных делается по необходимости и я прослеживаю, дабы waning-и компилятора об использовании переменной до ее инициализации не были подавлены. Компиляторов без такого warnig я что-то уже давно не припомню. И что характерно - никаких пустых переживаний :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться