powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли реализовать ветвление
25 сообщений из 31, страница 1 из 2
Можно ли реализовать ветвление
    #39555971
Сергей N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с тем, что мне не хватает отдельного типа ветвления, наподобие:
Код: pascal
1.
2.
3.
4.
COMPARE(VAR1,VAR2):
  VAR1 < VAR2: ;
  VAR1 = VAR2: ;
  VAR1 > VAR2: ;


как аналога ассемблеровских инструкций
Код: pascal
1.
2.
3.
4.
cmp
  jl
  je
  jg



Конечно, я могу записать,
Код: pascal
1.
2.
3.
4.
5.
6.
7.
if VAR1 <= VAR2 then
  if VAR1 = VAR2 then
    ;
  else
    ;
else
  ;


однако компилятор (но крайней мере, в моем случае) переводит это в избыточный код с двойным сравнением VAR1 с VAR2 (как и записано). Если в качестве переменных используются результаты функций или сложных вычислений, приходится создавать отдельные переменные и выделять под них память. При этом операция повторного сравнения все равно остается.

Можно ли как-то избежать этого?
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39555974
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей NМожно ли как-то избежать этого?
Если тип числовой, то можно вычесть одну переменную из другой и работать уже с результатом.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39555976
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Nприходится создавать отдельные переменныенормальные программисты код пишут для людей, а не для компьютера ;-)
Сергей Nвыделять под них памятьвсе это и так неявно создается зачастую, при сложных вычислениях регистров не хватает
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39555977
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей N,

Math.CompareValue();
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556004
Сергей N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, спасибо. С помощью собственной inline функции - аналога из Math и конструкций ifthen или case задачу решить конечно можно, но компилируемый код далек от того, чего хотелось бы.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556061
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00ch,

авторнормальные программисты код пишут для людей, а не для компьютера ;-)

Нормальные программисты, бывает, и прямо для процессора пишут, если сильно нужно :) Случаи всякие бывают.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556062
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon, SOFT FOR YOU, перелогинься))
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556065
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей N,

Есть у меня стойкое чувство, что от в твоей оптимизации нет никакого смысла. Пыль - неизмеримые наносекунды.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556068
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00ch,

мне самому не очень нравится то, что делает софт фор ю. я предпочитаю делать некоторые куски кода на mmx'е, где от этого есть реальна польза (фильтры-свёртки, например).
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556135
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕсли тип числовой, то можно вычесть одну переменную из другой и работать уже с результатом.И отгрести переполнение
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556152
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_wadmanЕсли тип числовой, то можно вычесть одну переменную из другой и работать уже с результатом.И отгрести переполнение
Зависит от...
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556155
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЗависит от...Лично я не люблю, когда код начинает зависеть
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556156
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Nоднако компилятор (но крайней мере, в моем случае) переводит это в избыточный код с двойным сравнением VAR1 с VAR2 (как и записано). Если в качестве переменных используются результаты функций или сложных вычислений, приходится создавать отдельные переменные и выделять под них память.Студент? Писать программу на Delphi под Windows и волноваться из-за того, что компилятор делает на одну-две машинных инструкции сравнения больше - это какая-то опасная психическая мания.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556165
Сергей N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зашедший, а я раньше удивлялся, почему у нас везде культура производства такая низкая?

А вообще убедили. Делаю простые ассемблерные вставки и снимаю вопрос.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556169
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей NЗашедший, а я раньше удивлялся, почему у нас везде культура производства такая низкая?
А вообще убедили. Делаю простые ассемблерные вставки и снимаю вопрос.Вот поэтому она и низкая, что дилетанты начинают блох подковывать вместо строительства конвейера и делать ассемблерные вставки там, где они не нужны.
Что-то переписывать на ассемблере есть смысл только после прогона профилировщиком и нахождения боттлнека, юноша.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556170
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_wadmanЗависит от...Лично я не люблю, когда код начинает зависетьОт программиста?
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556185
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanОт программиста?От входных данных
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556216
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_wadmanОт программиста?От входных данных
Я не верю в цифровых духов. Считаю, что всё зависит от программиста.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556262
Сергей N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зашедший, то что вы умеете пользоваться профайлерами, это здорово. То, что вы с помощью них умеете искать узкие места, тоже прекрасно. Пожелаю вам и код писать красивый, ведь, красота - это неосознанное признание целесообразности, не правда ли.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556274
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей NМожно ли как-то избежать этого?
Сергей, ну вот не знаю как ты пишешь.
Делфя гененирует тот код, который тебе надо.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
var i,i2:integer;
procedure TForm1.Button1Click(Sender: TObject);
label l1,l2,l3;
begin
 i:=tag;
 i:=15;
 asm
   nop
   nop
 end;
 if i<i2 then  goto l1
 else if i=i2 then goto l2
 else goto l3;

 asm
   nop
   nop
 end;

 l1:
 l2:
 l3:

end;
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556275
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если 1 сравнение и ветка, то только самому руками
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556292
AWSVladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
i:=tag;
 i:=15;
 asm
   nop
   nop
      mov eax,i
      cmp eax,i2
      jl l1
      jz l2
      jmp l3
 end;
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556303
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей NЗашедший, то что вы умеете пользоваться профайлерами, это здорово. То, что вы с помощью них умеете искать узкие места, тоже прекрасно. Пожелаю вам и код писать красивый, ведь, красота - это неосознанное признание целесообразности, не правда ли.Красивый код - это в первую очередь легко поддерживаемый и расширяемый код, покрытый интеграционными и юнит-тестами. За использование без какой-либо нужды вместо читаемого "if" нагромождения ассемблера в софтверных компаниях с выстроенным процессом разработки тимлид сначала влепит выговор, а при упорствовании - уволит.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556391
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зашедший, ну что ты в самом деле со своими приземленными материями пристал к страждущему высокого искусства низкоуровневой оптимизации! Он художник, он так видит.
...
Рейтинг: 0 / 0
Можно ли реализовать ветвление
    #39556395
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей NСтолкнулся с тем, что мне не хватает отдельного типа ветвления, наподобие:
Код: pascal
1.
2.
3.
4.
COMPARE(VAR1,VAR2):
  VAR1 < VAR2: ;
  VAR1 = VAR2: ;
  VAR1 > VAR2: ;


...
однако компилятор...
Можно ли как-то избежать этого?


Код: pascal
1.
2.
3.
4.
5.
  case CompareStr('1', '2') of
    -1: ... ;
     0: ... ;
     1: ... ;
  end;


Во что там переводит канпилятор - не знаю и знать не хочу.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли реализовать ветвление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]