реклама на сайте
подробности

 
 
> Как извлечь short из int'a в С для BF
Grumbler_2002
сообщение Apr 26 2007, 21:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817



Надо сдвинуть 32-битный регистр и использовать потом старшее и младшее слова этого регистра. Ума не приложу, как сделать это из Си.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serg76
сообщение Apr 26 2007, 22:36
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(Grumbler_2002 @ Apr 26 2007, 22:59) *
Надо сдвинуть 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"
*********************************************************************/
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 26 2007, 22:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Serg76 @ Apr 26 2007, 22:36) *
Если нет, то смотри далее

&0xff00 и &0xff
1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить;
2. Вообще не нужны ввиду полной нахренненужности.

Явная инициализация переменных нулями тоже совсем никчему.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Serg76
сообщение Apr 27 2007, 10:38
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(zltigo @ Apr 26 2007, 23:45) *
&0xff00 и &0xff
1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить;
2. Вообще не нужны ввиду полной нахренненужности.

Явная инициализация переменных нулями тоже совсем никчему.

по первому пункту согласен, тут я сам напорол косяков smile.gif , а что касается наложений масок и начальной инициализации, то это считается хорошим тоном, да и вообще лишний раз подстраховаться не помешает.


Цитата(zltigo @ Apr 26 2007, 23:45) *
&0xff00 и &0xff
1. Должны быть как минимум 0xffff0000 и 0x0000ffff дабы, как минимум просто не навредить;
2. Вообще не нужны ввиду полной нахренненужности.

Явная инициализация переменных нулями тоже совсем никчему.

по первому пункту согласен, тут я сам напорол косяков smile.gif - сыграл человеческий фактор, а что касается наложений масок и начальной инициализации, то это считается хорошим тоном, да и вообще лишний раз подстраховаться не помешает, а то бывали случаи, что сидишь в отладчике сутками, не можешь ошибку выявить, а оказывается где-то что-то не обнулил или еще что-то подобное.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 27 2007, 11:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Serg76 @ Apr 27 2007, 10:38) *
а что касается наложений масок и начальной инициализации, то это считается хорошим тоном

Хорошим тоном является не писать абсолютно лишнего и бесполезного кода, который кто-то будет читать и отвлекаться на поиски отсутствующего sad.gif смысла в оном. Ну и заодно "косяков" сами не напорете при его написании, превратив бесполезный во вредный.
Цитата
да и вообще лишний раз подстраховаться не помешает

От желания "подстраховаться" хорошо помогает изучение языка программирования а не чтение правил хорошего тона и чужих неведомо кем писанных исходников выложеных в интернет по причине их полной "бесценности" smile.gif.
Практически единственным средством (не то, что-бы подстраховки, а средством облегчения чтения), пожалуй, в "C" следует признать использование скобок для подчеркивания приоритетов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Serg76
сообщение Apr 27 2007, 22:23
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(zltigo @ Apr 27 2007, 12:15) *
Хорошим тоном является не писать абсолютно лишнего и бесполезного кода, который кто-то будет читать и отвлекаться на поиски отсутствующего sad.gif смысла в оном. Ну и заодно "косяков" сами не напорете при его написании, превратив бесполезный во вредный.

От желания "подстраховаться" хорошо помогает изучение языка программирования а не чтение правил хорошего тона и чужих неведомо кем писанных исходников выложеных в интернет по причине их полной "бесценности" smile.gif.
Практически единственным средством (не то, что-бы подстраховки, а средством облегчения чтения), пожалуй, в "C" следует признать использование скобок для подчеркивания приоритетов.

По всей видимости, Вы не сталкивались с данными ситуациями, а значит либо мало кодите, либо так все обходилось, ибо не бывает кода без ошибок. Дай Бог Вам счастья и в дальнейшем.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 27 2007, 23:25
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Serg76 @ Apr 27 2007, 22:23) *
По всей видимости, Вы не сталкивались с данными ситуациями, а значит либо мало кодите, либо так все обходилось...

На так, авось и вдруг не надеюсь. Я знаю что я делаю и какими средствами пользуюсь. Просто минимальный профессионализм.
Если Вы вдруг сталкивались - просветите насчет "инструмента" который вдруг позволил выдать разный
результат на:
Код
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;


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Grumbler_2002   Как извлечь short из int'a в С для BF   Apr 26 2007, 21:59
- - zltigo   Ума не приложу о чем это ? Начните со сдвигов - по...   Apr 26 2007, 22:06
- - Grumbler_2002   Эквивалент R0<<=1; R1=Op(R0.h); R2=Op(R0.l)...   Apr 26 2007, 22:12
|- - zltigo   Цитата(Grumbler_2002 @ Apr 26 2007, 22:12...   Apr 26 2007, 22:15
- - Grumbler_2002   И че, компилятор рюхнет, что сдвигать reg не надо,...   Apr 26 2007, 22:18
|- - zltigo   Цитата(Grumbler_2002 @ Apr 26 2007, 22:18...   Apr 26 2007, 22:22
|- - Serg76   Цитата(zltigo @ Apr 28 2007, 00:25) На та...   Apr 27 2007, 23:40
|- - zltigo   Цитата(Serg76 @ Apr 27 2007, 23:40) и пов...   Apr 28 2007, 00:00
|- - dxp   Цитата(Serg76 @ Apr 28 2007, 03:40) В это...   Apr 28 2007, 08:00
- - Grumbler_2002   Нашел всё, что нужно было. Есть тип int2x16 и встр...   Apr 27 2007, 20:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016