Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Такая проблема, считываю из бинарного файла 4 байтное число в переменную p:integer; требуется код ассемблера, переворачивающий БАЙТЫ в этом числе, то есть чтобы на выходе была переменная p1:integer в которой хранилась бы перевернутая информация. Пишу на делфи, помогите пожалуйста сделать такую ассемблерную вставку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 15:56 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Привет, Андрей! Ты пишешь: Андрей АС> Такая проблема, считываю из бинарного файла 4 байтное число в переменную p::integer; АС> требуется код ассемблера, переворачивающий БАЙТЫ в этом числе, АС> то есть чтобы на выходе была переменная p1:integer в которой АС> хранилась бы перевернутая информация. АС> Пишу на делфи, помогитеЧто значит "перевёрнутая" ? Да и нахрена тут ассемблер-то? -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 16:14 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
команда xchg ah,al обменяет местами значения регистров ah и al или как вариант xor ah,al xor al,ah xor ah,al ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 17:18 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Ну, ассемблер тут, действительно, может и не стоит городить... Если правильно понял задачу, т.е, из числа $F1F2F3F4 получить число $F4F3F2F1, то можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 21:55 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
И волки целы, и пастух -- герой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2005, 03:58 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Насчет "красиво" - да. "На ассемблере" - да. А вот насчет "быстро" - нет :) Это Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2005, 04:22 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Уточню, что нужно предложенную мной функцию либо заинлайнить (если позволяет конкретная реализация языка), либо не использовать в качестве функции, а все манипуляции вставить непосредственно в код. Тогда она действительно будет быстрее медленной операции BSWAP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2005, 04:34 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Uncle_Joeнемного быстрее ;-) А если его еще оптимизировать - вжжжик :)жжошш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2005, 13:31 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Начнём с общечеловеческих ценностей, с самой простой из них, но не такой уж доступной: получить прямой ответ на поставленный вопрос. Я такой ответ дал, а Uncle_Joe? Ещё и сказки рассказывает про "медленную операцию BSWAP"! Да она быстрее PUSH или POP выполняется! Теперь ближе к делу. Delphi транслирует чудо-код Uncle_Joe в следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Вся эта орава (не в одном экземпляре, естественно!) выполяется за 17036 циклов процессора. Моего компьютера, в частности. А крошка BSWAP (в том же количестве штук, что и код-оппонент) -- всего за 3988. Так кто тут быстрее? Даже если использовать ECX, который сохранять не требуется, вместо ESI, то всё равно время составляет 15000 циклов. И это -- без оформления в виде процедуры, что ещё больше увеличит время выполнения. Вот так-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 03:43 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за помощь, на практике не заметил существенных отличий в скорости этих двух предложенных вариантов. Выбрал ассемблер, все работает щас отлично ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 12:35 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Напостили пипец :) А парень всего-то хотел Intel"oвскую записть представить слева на право Ну я ли тупой после этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 18:53 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Привет, Тупой! Ты пишешь: Тупой Т> Напостили пипец :) Т> А парень всего-то хотел Intel"oвскую записть представить слева на право А куй его знает, чего именно он хотел. Он так и не признался... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 19:21 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Хотел в big endian перевести я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 06:36 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
Дядя Серёжа........... выполяется за 17036 циклов процессора. Моего компьютера, в частности. А крошка BSWAP (в том же количестве штук, что и код-оппонент) -- всего за 3988. ......... Простите...А "циклы процессора" Вы енто хде узрели ? Предлагаю слать прямиком в интел... А то они один да один такт (x486)...А Вы им сразу 3988 и точка :) По скорости - тут и разговаривать глупо. Данная команда (BSWAP) быстрее чем всё то, что написано как альтернатива...см. доку по командам на Ваш проц... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 12:53 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
kolobok0 Дядя Серёжа........... выполяется за 17036 циклов процессора. Моего компьютера, в частности. А крошка BSWAP (в том же количестве штук, что и код-оппонент) -- всего за 3988. ......... Простите...А "циклы процессора" Вы енто хде узрели ? Предлагаю слать прямиком в интел... А то они один да один такт (x486)...А Вы им сразу 3988 и точка :) По скорости - тут и разговаривать глупо. Данная команда (BSWAP) быстрее чем всё то, что написано как альтернатива...см. доку по командам на Ваш проц... с уважением (круглый) Ну вообще-то измерение истинной производительности куска кода делается на основании многократной прогонки. Оттуда и появилась такая цифра. Надо просто разделить на кол-во прогонок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 15:34 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
LelikkНу вообще-то измерение истинной производительности куска кода делается на основании многократной прогонки. Оттуда и появилась такая цифра. Надо просто разделить на кол-во прогонок. Осталось выяснить маленьчкие весчи... 1) Ваша фамилия интел ? Вот они лохи утверждают что за один такт выполняеться данная команда :) . 2) В понятие "истинная производительность" Вы, как я пологаю включили время отсосанное ран-тайм драйверами и менагером задач ? Кхм, тогда причём тут "циклы процессора" ? Так и писали бы, непонятно замеренное время, между 1000 прогонами данного кода, предположили что все драйвера работали честно, без глюкаво и быстро...Либо (если Вы проверяете честность производителя камня): тестировали под досом в реал моде - убедились, что не врёт усякий интелл. Либо: написали своё ядро, перевели в протэкшен моде - результат превзошёл все ожидания, буржуи оказались правы ! ну и т.д.. ну прям как дети, ей богу... с уважением (круглый) ЗЫ................. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 15:53 |
|
||
|
Помогите с Ассемблером
|
|||
|---|---|---|---|
|
#18+
kolobok0А "циклы процессора" Вы енто хде узрели ? Хотя бы тут узрел: Copyright © 1996, 2000 by Agner Fog The Pentium family of processors have an internal 64 bit clock counter which can be read into EDX:EAX using the instruction RDTSC (read time stamp counter). This is very useful for testing exactly how many clock cycles a piece of code takes. kolobok0Предлагаю слать прямиком в интел Там уже в курсе, к примеру, даже о том, что для 486-го понятие "такта" было уместно, для машин P5 (Pentium Plain and Pentium MMX) -- так-сяк, а вот для P6 (от Pentium Pro до самого упора) -- уже никак! Там микрооперации, да и подсчёт не столь тривиален... Особо точное значение в микрооперациях никому и не требовалось, а вполне достоверные и наглядные данные по методике measuring the number of clock cycles получены были. Меня они убедили. Clock cycles -- может и не "циклы процессора", а "циклы [внутренних] часов". По сути, это были "у. е." для данного случая. И 3988 циклов (или "циклов"?) я не "сразу", а с изрядного количества взял. О чём внятно упомянул. Ну, никак не заметить времени выполнения одной инструкции -- один "такт", по Колобку, не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 03:31 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=195&tid=1347367]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 359ms |

| 0 / 0 |
