Aiwan \ (•◡•) / _bot
mov edx,dword[minimum] mov ebx,dword[eax+edx*4]
Aiwan \ (•◡•) / _bot
или shl dword[minimum],2 mov ebx,dword[eax+minimum]
Aiwan \ (•◡•) / _bot
в eax у меня значение памяти массива, minimum номер элемента получается
у тя все равно не получится. нигде в этом коде нет адреса начала массива
Ilyxa
Вот это чудо получается так же делать?
Aiwan \ (•◡•) / _bot
в eax у меня значение памяти массива, minimum номер элемента получается
3 9 1 4 5 нужно еденица, eax = 1, counter = 2. адреса нигде нет
Ilyxa
А задача сделать сортировку вставками на asm
Eugene
или shl dword[minimum],2 mov ebx,dword[eax+minimum]
Нэт. Не получится сразу 2 ячейки памяти почитать одной инструкцией.
Aiwan \ (•◡•) / _bot
Нэт. Не получится сразу 2 ячейки памяти почитать одной инструкцией.
у него там вообщеиничего не получится, тк адресуется неправильно
Eugene
Вообще, надо более полный код приводить и объяснять что должно происходить. Потому что по 2м строчкам дать ответ, гадая, что чел задумал... сомнительное занятие.
Ilyxa
mov edx,dword[minimum] mov ebx,dword[eax+edx*4]
Ну мне вот это помогло, теперь сортируется, только пришлось dword убрать, ругался на него
Aiwan \ (•◡•) / _bot
Вообще, надо более полный код приводить и объяснять что должно происходить. Потому что по 2м строчкам дать ответ, гадая, что чел задумал... сомнительное занятие.
зато вся ответственность снимается за предоставленные советы. всегда можно сказать "я не видел полной картины"
Ilyxa
Еще такой вопрос
Ilyxa
Почему neg ломает ecx, а не отрицает его
Ilyxa
Просто выводит 65286
Eugene
Потому что strLength-1 - это адрес, а не значение.
Aiwan \ (•◡•) / _bot
Почему neg ломает ecx, а не отрицает его
все логично, после rep ecx=0, в этом случае neg ничего не делает. потом из 0 ты вычитаешь длину строки-1. но ты наверное проверяешь не ecx, a cx, там отрицательное число будет -249 вроде. 250 это длина буффера для пути в винде вроде
Ilyxa
Если верить дебагеру
Ilyxa
Ищет 0 в строке
Eugene
Хм, понял
strLength - это же переменная? Показывай сразу объявления вместе с кодом.
Ilyxa
strLength - это же переменная? Показывай сразу объявления вместе с кодом.
Да, это параметр функции, содержит в себе максимальную длину заданной строки (256)
Saenro
Почему neg ломает ecx, а не отрицает его
Видимо ты хочешь следующее: mov edi, string mov ecx, [length] xor al, al repnz scasb sub ecx, [length] neg ecx ;или not ecx mov eax, ecx ret разница между not/neg NOT ECX — укажет на символ перед нулём. NEG ECX — укажет на ноль.
Ilyxa
После отрицания, надо единицу прибавлять?
Saenro
В зависимости от задач, если просто перевести минус в плюс или наоборот, то да, через NEG. Это всё равно что NOT+INC.
Saenro
Почему neg ломает ecx, а не отрицает его
Просто у тебя в коде нужно поменять местами SUB и NEG.
Aiwan \ (•◡•) / _bot
я наверное что то не там выше сказал, не учел что из цикла выход досрочный
Aiwan \ (•◡•) / _bot
Ищет 0 в строке
ты по сути ищешь длину строки в буффере? @TouristPlay
Ilyxa
Разность буфера и ecx дадут длину строки
Aiwan \ (•◡•) / _bot
тыкаю чтоб удалить, а не удаляется (оказывается я здесь не админ). и сюда добрались гурманы асма по хардкору. @IvUyr
nano
Они даже не фильтруют. Вкатываются во все подряд. Авось повезёт
λ
Интересно, на что ТУТ шмароботы надеются...
На мужчин. В телеграм-чатах, посвящённых программированию, 95% — мужчины, это уж точно. Может, из тысячи найдётся такой, у кого есть с этим проблемы... А вообще капчу можно поставить, чтобы у разработчиков таких ботов возникли такие проблемы
­
Вот ещё одно. Хотя, похоже, нет.
Eugene
На мужчин. В телеграм-чатах, посвящённых программированию, 95% — мужчины, это уж точно. Может, из тысячи найдётся такой, у кого есть с этим проблемы... А вообще капчу можно поставить, чтобы у разработчиков таких ботов возникли такие проблемы
У нас есть капча в одном из чатов. Т.е. нужно перейти по кнопке и ответить на вопрос (который, по правде говоря, одинаковый для всех). Тем не менее, они проходят. Но они ничего не постят, а пытаются привлечь именем.
­
Писали сюда бота... на ассемблере...
λ
Я юзаю https://github.com/J-Rios/TLG_JoinCaptchaBot/ , помогает🤔
Да тут даже не с капчей проблемы. Ведь их можно решать с помощью человека. Надо по нику банить, они примерно одинаковые
Eugene
Сейчас как минимум ссылка в описании и клубнички по краям. У всех. Ну и да, ключевые слова и учётом замены букв-цифр-раскладки.
λ
Сейчас как минимум ссылка в описании и клубнички по краям. У всех. Ну и да, ключевые слова и учётом замены букв-цифр-раскладки.
А, ну по ссылке можно палить в описании. Мало у какого нормального пользователя будет ссылка на какой-то канал. Но чтобы перестраховаться, можно получить пару постов из канала и выделить ключевые слова, извлечь ссылки. Как-то так
Eugene
С другой стороны, а стоят ли все эти усилия результата?
Экономия времени админов. За счёт времени программиста :) Ладно, это всё оффтоп.
Eugene
Делается асм-вставка в сишный код: .intel_syntax noprefix бла-бла-бла Как вернуть обратно тот синтаксис, который был до этого? Т.е. если был AT&T, то вернуть его, если Intel, то его.
Eugene
И вопрос по спецификаторам. Если я использую fld / fstp, какой спецификатор использовать в clobbers? asm( ... "fld ..." "fld ..." ... "fstp ..." "fstp ..." ... : // outputs : // inputs : // clobbers );
Eugene
Не могу въехать в объяснение в мане...
Eugene
Aiwan \ (•◡•) / _bot
ты про размер каторый надо выводить из стека или про что? что за спецификаторы?
Eugene
.att_syntax prefix
А если до этого был Intel-синтаксис?
disba1ancer
А если до этого был Intel-синтаксис?
Эти директивы просто включают тот синтаксис который укажешь начиная с данной/следующей строки
Eugene
Эти директивы просто включают тот синтаксис который укажешь начиная с данной/следующей строки
Я понял. Но вот ты решил сделать асм-вставку. Пишешь: asm ( ".intel_syntax noprefix" блаблабла ".att_syntax prefix" ); А чел взял и скомпилил код с опцией -masm=intel (вот так надо ему).
disba1ancer
Я понял. Но вот ты решил сделать асм-вставку. Пишешь: asm ( ".intel_syntax noprefix" блаблабла ".att_syntax prefix" ); А чел взял и скомпилил код с опцией -masm=intel (вот так надо ему).
Хз, вот этого не знаю, вроде способов запушить это не было, проще тогда весь проект на одном синтаксисе держать
Eugene
ты про размер каторый надо выводить из стека или про что? что за спецификаторы?
Я ж код привёл там же. Спецификаторы для asm-вставки в GNU C/C++.
Eugene
Для регистров идёт перечисление регистров ("%eax", напрмер), для памяти "memory", для флагов "cc". А если нужно указать, что я сдвигаю стек на 2 позиции? Если писать "st(1)", получается, что я просто затираю st(1), а я ничего не затираю, только сдвигаю FPU-стек (и оптимизатор, как я понимаю, должен сделать так, чтобы st(6) и st(7) не были заняты, иначе будет переполнение стека).
Aiwan \ (•◡•) / _bot
ааа, это ты с айтити разбираешься
Eugene
Похоже, что такой макрокоманды нету в принципе
Ну, может, если в гнутом С/С++ какие-то макросы, чтобы определить синтаксис?
Maksim R.
Добрый вечер, есть кто может помочь студенту с простой задачей?
­
Спрашивай. Кто захочет - поможет.
Maksim R.
Суть задачи: Задан одномерный массив. Сортировать элементы массива в обратном порядке.
Eugene
Суть задачи: Задан одномерный массив. Сортировать элементы массива в обратном порядке.
Помочь — это когда ты что-то сам сделал, но чего-то не работает. А это называется "сделайте за меня лабу" :)
Eugene
Пузырёк. Только наоборот.
Значит, булыжничек.
Maksim R.
Все что я сделал это задал массив из чисел
Maksim R.
Не понимаю как дальше двигаться, уже сколько смотрю информации
Maksim R.
Преподаватели мало информации дали
Eugene
Поделюсь лайфхаком. Открываешь Яндекс, вбиваешь "сортировка ассемблер", и самая первая ссылка твоя. Куча примеров, на любой вкус. От пузырьковой и вставками и до быстрой и комбинированных.
Eugene
Соединяешь с тем, что сделал и... бинго. Ну или не бинго... тогда уже спрашиваешь конкретно, что не получается. С кодом (в виде ссылки на gist, например... или если кусок небольшой, прям сюда кидаешь, обрамив тройным тегами ` с двух сторон).
Maksim R.
Спасибо. Благодарен