Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
coprozar

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Где можно почитать о структурах S файлов, меня интересует ABI

Всего записей: 20 | Зарегистр. 21-02-2017 | Отправлено: 14:08 10-10-2018
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для какой платформы, компилятора? Они разные, и по словосочетанию"Calling conventions" находятся.

Всего записей: 1525 | Зарегистр. 01-11-2004 | Отправлено: 16:44 10-10-2018
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
c 64 битным ассемблером нету прогресса?

Всего записей: 3412 | Зарегистр. 29-03-2016 | Отправлено: 20:42 11-10-2018
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Там не так часто новые комманды процессора появляются.

Всего записей: 1525 | Зарегистр. 01-11-2004 | Отправлено: 22:06 11-10-2018
coprozar

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Для какой платформы, компилятора? Они разные, и по словосочетанию"Calling conventions" находятся.
 

 
FreeBSD 11.2, gcc 4.2.1

Всего записей: 20 | Зарегистр. 21-02-2017 | Отправлено: 18:40 14-10-2018
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если под intel архитектуру, тогда https://www.agner.org/optimize/calling_conventions.pdf будет самое оно.

Всего записей: 1525 | Зарегистр. 01-11-2004 | Отправлено: 20:47 14-10-2018
Kiklo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При миграции с TASM на ML.exe (Macro Assembler Version 12.00 от студии MSVS-2013)
заело в одном месте:

Код:
         PUBLIC    bswap_l, bswap_ul, bswap_f
bswap_l       PROC
bswap_ul:
bswap_f:
              push      ebp
              mov      ebp,esp
...
              pop       ebp
              ret
bswap_l       ENDP
 

 
PUBLIC не видит меток bswap_ul и bswap_f.
 
По идее требуется клонировать вход в функцию bswap_l в двух экземплярах под другими именами (bswap_ul, bswap_f). TASM делает то, что нужно, а ML снаружи меток внутри функции не видит.
 
Как это побороть малой кровью, т.е. чтобы не добавлять допонительные JMP?

Всего записей: 233 | Зарегистр. 17-08-2007 | Отправлено: 23:09 24-03-2019 | Исправлено: Kiklo, 23:18 24-03-2019
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PUBLIC bswap_l
ALIAS <bswap_ul> = <bswap_l>
ALIAS <bswap_f> = <bswap_l>
 
bswap_l PROC
                  ret
bswap_l ENDP
END

Всего записей: 1525 | Зарегистр. 01-11-2004 | Отправлено: 00:15 25-03-2019
Kiklo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens, спасибо!
Однако чуть раньше я успел найти другой способ, выглядящий для меня более понятным:

Код:
        PUBLIC    bswap_l, bswap_ul, bswap_f
bswap_l       PROC
bswap_ul      LABEL     PROC
bswap_f       LABEL     PROC
              push      ebp
              mov       ebp,esp
...
              pop       ebp
              ret
bswap_l       ENDP
 
Т.е. если определить метку вместо двоеточия через "LABEL PROC", то компилятор видит ее за пределами тела функции.
 
P.S. Только что обнаружил еще более простой способ - заменить у меток bswap_ul и bswap_f одиночное двоеточие на двойное:

Код:
        PUBLIC    bswap_l, bswap_ul, bswap_f
bswap_l       PROC
bswap_ul::
bswap_f::
              push      ebp
              mov       ebp,esp
...
              pop       ebp
              ret
bswap_l       ENDP

Век живи - век учись.

Всего записей: 233 | Зарегистр. 17-08-2007 | Отправлено: 10:00 25-03-2019 | Исправлено: Kiklo, 11:02 25-03-2019
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[Век живи - век учись], дураком помрёшь...
народная мудрость...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:07 25-03-2019
vicontfreetime

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как наиболее просто (точнее, наиболее быстро) выполнить симметричный перенос единиц в полубайте и при этом поменять местами полубайты в байте, а байты расположить в последовательности наоборот?
 
То есть, дана последовательность байтов, например, такая 01001110 11110001 11100100 00110010
 
необходимо проделать итерации:
 
1. берём последний полубайт 0010
2. симметрично отражаем его, получаем 0100
3. ставим его в первый байт старшим полубайтом
4. берём второй с конца полубайт 0011
5. симметрично отражаем его, получаем 1100
6. ставим его младшим полубайтом, получаем первый байт 01001100
7. берём третий с конца полубайт и т.д.
 
В идеале, конечно, придумать бы SSE2-вариант. У меня что-то уже крыша едет.

Всего записей: 377 | Зарегистр. 22-04-2002 | Отправлено: 08:11 05-04-2019
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vicontfreetime
Так это же по сути просто инвертирование порядка бит во всей последовательности. Всё сводится к "берём число и симметрично отражаем его", не связываясь с полубайтами. От этого и пляшите. Если в лоб, можно просто крутить в цикле через операции циклического сдвига ror/rcl.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 08:59 05-04-2019
vicontfreetime

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Хм... может, я чего не понимаю, но это не обычное инвертирование, поскольку
 
1110 должно превратиться в 0111, а 1111 - остаться тем же.

Всего записей: 377 | Зарегистр. 22-04-2002 | Отправлено: 05:49 08-04-2019
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vicontfreetime
Инвертирование не самих битов, а их порядка. То есть все биты надо расставить в обратном порядке.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6077 | Зарегистр. 22-10-2005 | Отправлено: 07:12 08-04-2019
vicontfreetime

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Ага... Да, действительно. Туплю

Всего записей: 377 | Зарегистр. 22-04-2002 | Отправлено: 08:11 08-04-2019
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vicontfreetime
Тут две вещи.  
1. Под какой процессор (и, как следствие, набор инструкций). Под 286 будет одно, под проц с поддержкой AVX2 - другое.
2. "Наиболее просто" и "наиболее быстро" будет выглядеть по-разному.
 
Наиболее просто и универсально - по таблице, в которой исходный байт является индексом, по которому лежит искомый байт с обратным порядком бит. Будет работать на любом процессоре x86.
 
Наиболее быстро будет на проце с поддержкой AVX2, там можно за цикл инвертировать порядок бит сразу в 32 байтах. Возможно с AVX512 будет ещё быстрее, но там я не смотрел (мой проц эти инструкции "не умеет").
 
А вообще вот прекрасный топик по теме:
https://stackoverflow.com/questions/746171/most-efficient-algorithm-for-bit-reversal-from-msb-lsb-to-lsb-msb-in-c/

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 23:30 11-04-2019 | Исправлено: Benchmark, 23:34 11-04-2019
vicontfreetime

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Benchmark
Хм, насчёт AVX2 не уверен, у нас в ряде мест стоят Бульдозеры, а там только AVX. Но точно не ниже AVX.
 
За ссылку спасибо, -  читаю.

Всего записей: 377 | Зарегистр. 22-04-2002 | Отправлено: 07:09 15-04-2019
Starlaik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
Доброго времени суток уважаемый, в этой теме ссылаются на вас http://forum.ru-board.com/topic.cgi?forum=35&topic=44145#lt
 
Очень нужна нужна ломанная прога эта Hart master, ссылочки все очень старые и не работают, может у вас завалялась программка?
 
Извиняюсь что не по теме...

Всего записей: 2 | Зарегистр. 04-06-2019 | Отправлено: 18:36 04-06-2019
Retro222

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите современную IDE.

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 00:16 13-05-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Retro222
 
вот, например, список в "инструментах":
http://forum.ru-board.com/topic.cgi?forum=33&topic=11984&start=0&limit=1&m=1#1

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 09:33 14-05-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru