Автор | Сообщение |
|
| Администратор
|
Пост N: 1928
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.05.11 09:32. Заголовок: Сдвиг числа
Напомните склеротику, как сделать сдвиг влево/вправо числа в Harbour В xHarbour я просто делаю: nSec >> 5 а Harbour такую операцию не поддерживает NumRoll из ct не подходит, поскольку мне нужен не циклический сдвиг
|
|
|
Ответов - 7
[только новые]
|
|
|
| moderator
|
Пост N: 213
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.05.11 10:00. Заголовок: Pasha пишет: Harbou..
Pasha пишет: цитата: | Harbour такую операцию не поддерживает |
| Это не так (см.ниже) Скрытый текст /* xHarbour operators: IN, HAS, LIKE, >>, <<, |, &, ^^ */ #translate ( <exp1> IN <exp2> ) => ( (<exp1>) $ (<exp2>) ) #translate ( <exp1> HAS <exp2> ) => ( HB_REGEXHAS( (<exp2>), (<exp1>) ) ) #translate ( <exp1> LIKE <exp2> ) => ( HB_REGEXLIKE( (<exp2>), (<exp1>) ) ) #translate ( <exp1> \<\< <exp2> ) => ( HB_BITSHIFT( (<exp1>), (<exp2>) ) ) #translate ( <exp1> >> <exp2> ) => ( HB_BITSHIFT( (<exp1>), -(<exp2>) ) ) /* NOTE: These macros can break some valid Harbour/Clipper constructs, so they are disabled by default. Enable them with care, or even better to switch to use HB_BIT*() functions directly. They are optimized by Harbour compiler the same way (and even more) as these C-like operators, without any bad side-effects. */
|
|
|
|
|
| Администратор
|
Пост N: 1929
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.05.11 10:10. Заголовок: Спасибо Изменил в с..
Спасибо Изменил в своем тексте: #ifdef __XHARBOUR__ Local nAsw := nSec ^^ ((nSec >> 5) | 0xA0000000) #else Local nAsw := HB_BitXor(nSec, HB_BitOr(HB_BitShift(nSec, -5), 0xA0000000)) #endif Строг оказался Harbour Пересобираю свои программы, и спотыкаюсь на конструкциях вида: if(lExpr, nSum+=Summa, 0) Harbour такое не компилирует, говорит - бессмыссленное использование Numeric Заменяю на if(lExpr, nSum+=Summa,)
|
|
|
|
| moderator
|
Пост N: 214
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.05.11 12:08. Заголовок: Pasha пишет: Заменя..
Pasha пишет: цитата: | Заменяю на if(lExpr, nSum+=Summa,) |
| Более наглядно выглядит
|
|
|
|
| Администратор
|
Пост N: 1930
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.05.11 12:16. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Да такие конструкции используются внутри блока кода, так что отдельными операторами не получится Меня удивило то, что Harbour генерирует ошибку, хотя вполне достаточно было бы предупреждения
|
|
|
|
| Администратор
|
Пост N: 1931
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.05.11 14:36. Заголовок: Поскольку я сейчас з..
Поскольку я сейчас занимаюсь переводом xHarbour --> Harbour, сейчас внимательно изучаю кишки Harbour И вижу, что Harbour теперь работает не как интерпретатор, а пи-код сейчас выполняется покомандно вызовами hb_xvm* отдельно для каждой пи-команды. Этот режим появился довольно давно, еще в xHarbour, но теперь для Harbour он стал основным. Во всяком случае так собраны его библиотеки, с флагом компилятора -gc3 Если собрать exe в таком режиме, его размер получается больше раза в 2-3, но выполняется он по-видимому быстрее
|
|
|
|
| moderator
|
Пост N: 215
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.05.11 15:50. Заголовок: Pasha пишет: так со..
Pasha пишет: цитата: | так собраны его библиотеки, с флагом компилятора -gc3 |
| Да, этот ключ используется при сборке только RDD и RTL библиотек, цель - максимально ускорить выполнение программы
|
|
|
|
| постоянный участник
|
Пост N: 1748
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.05.11 18:37. Заголовок: Pasha пишет: Если с..
Pasha пишет: цитата: | Если собрать exe в таком режиме, его размер получается больше раза в 2-3, но выполняется он по-видимому быстрее |
| А сколько занимает ехе-файл на хХарборе и Харборе ? В цифрах дать можете ? И как по быстродействию ситуация обстоит ?
|
|
|
|