![]() |
Обмен значениями двух переменных (только двух переменных)
У всех на форумах есть, надо вот и тут тоже напостить...
есть несколько способов обмена значениями двух переменных: метод первый: Код:
a=a+b :) |
Re: Обмен значениями двух переменных (только двух переменных)
я тут решил поигратся с етой штукой :)
(ну от нефиг делать) на asm именно такой алгоритм можно представить как : Код:
mov ax,[a] ето система даже не asm а набор мнемоник который показывает как работает проц со стеком при таких операциях Код:
push a Код:
push [a] ASM РУЛИТ ! :-) |
Re: Обмен значениями двух переменных (только двух переменных)
Очередь LIFO на нижнем уровне - рулит!
|
Re: Обмен значениями двух переменных (только двух переменных)
Цитата:
задание было именно без юзания порсторонних средств, а так можно и файлы заюзать (типа там сохранить а потом прочитать), можно еще через буфер клавы пропустить и через ДМА, а еще можно в видеопамять записать, и через звуковуху можно(проиграть два байта и записать их)... но это все не то, что я хотел... еще есть вариант с "XOR"... ;) |
Re: Обмен значениями двух переменных (только двух переменных)
хе
я тебе расписал на asm твой алгоритм :) (не твой правда) предложил свой в итоге мое и твое в любом случае юзает стек, какие проблеммы ? |
Re: Обмен значениями двух переменных (только двух переменных)
А если я так делаю, я неправильный кодер?
Код:
mov ax,a |
Re: Обмен значениями двух переменных (только двух переменных)
alcoSHoLiK
возьмем хотя бы инфу по 486 машинам (там хотя бы расписано сколько тактов занимают команды) смотрим суда : http://www.penguin.cz/~literakl/intel/m.html http://www.penguin.cz/~literakl/intel/x.html у тебя mov accum,mem ... 1 такт и xchg accum,reg .. 3 такта в суме 4 такта если юзать push pop (мой метод) то http://www.penguin.cz/~literakl/intel/p.html выходит 4*2 + 6*2 = 20 тактов в суме Хотя если работать с регистрами - то 10 тактов довольно интересно ... знаеш мне понравилось :super: видимо чем больше я знаю, тем больше я знаю что ничего не знаю :) кстати интересно компиляторы такую оптимизацию делают ? |
Re: Обмен значениями двух переменных (только двух переменных)
Получается тогда, что в этой ситуации стек вообще неэффективно использовать. Даже xor'ом быстрей будет:
Код:
mov ax,a ;1 такт |
Re: Обмен значениями двух переменных (только двух переменных)
но тогда ето нужно будет писать как inline функцию... или вообще как дефайн
|
Re: Обмен значениями двух переменных (только двух переменных)
Цитата:
|
Re: Обмен значениями двух переменных (только двух переменных)
Код:
1110 1011 0000 0101 1001 0000 0101 0000 0000 0000 0110 0000 0000 0010 1110 1010 0001 0000 0011 0000 0001 0010 1110 1000 0111 0000 0110 0000 0101 0000 0001 1100 0011 |
Часовой пояс GMT +4, время: 06:40. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot