умение программировать
Sergey
Реально отзовитесь кто имеено асм разрабом работает. Такое бывает?
вряд ли кто-то сейчас кодит на чистом асме, иногда бывает надо смотреть что компилятор в асм-е накомпилил, или делать какие-то вставки на асме, но чтобы чисто на асме... не слышал
Sergey
Для души
для души наверное кто-то и на бреинфаке пишет)
NoB0dy
Все бывает)
NoB0dy
Интересно стало, пойду поищу чаты по бреину, если есть таковые
Eugene
Для души
Сайзкодинг для демосцены. Это для души как раз :)
Sergey
Сайзкодинг для демосцены. Это для души как раз :)
демосцена это в целом для меня какая-то магия, до сих пор под впечатлением от kkrieger в 96кб
Anonymous
Скорее байт
Anonymous
А не кб
Sergey
нет, именно кб
Anonymous
А, прошу прощения
Eugene
А, прошу прощения
Там игруха типа квейка. Но асма там, я думаю, не шибко много. По крайней не бо́льшая часть.
usernameak
исходники игры в открытом доступе, но не исходники нужной для неё версии движка
nano
Лет через 20 будут говорить, нафига вы вообще пишите руками. Вон все пишут на голосовых командах(как в железном человеке)
Anonymous
https://t.me/MacSoftwareFree/107 A free cracking software for Mac channel, free forever.
usernameak
Лет через 20 будут говорить, нафига вы вообще пишите руками. Вон все пишут на голосовых командах(как в железном человеке)
https://github.com/farbrausch/fr_public/blob/master/werkkzeug3/data/kkrieger.k исходник игры здесь, но требуемая для его сборки версия движка просрана
usernameak
Мне кажется, они просто свой движок никому не показывают. Исходники.
исходники движка на уровень выше лежат, но не та версия
usernameak
в корне есть werkkzeug3_kkrieger, но это какой-то палёный билд, который даже не компилится
usernameak
исходники движка на уровень выше лежат, но не та версия
она просто половину нодов красным подсвечивает
usernameak
она просто половину нодов красным подсвечивает
хотя сцену всё таки удаётся загрузить, не работает геймплейная часть
nano
Блииин давно хотел их исходники, пасибки
Artur
Есть программа /редактор который помогает красиво отформатировать код и комментарии?
Artur
что подразумевается под "красиво"?
отступы где требуются и в правильно количестве
Aiwan \ (•◡•) / _bot
хотя видел идешку для си, там выделяешь весь текс и выбираешь по типу "оформление по стилю K&R". он делает сам отступы и фигур скобки выставляет соответственно как в стиле
Artur
addi $sp, $sp, -4 sw $ra, 0($sp) addi $sp, $sp, -4 sw $s0, 0($sp) Почему все время обращаемся к индексу 0 ? Мы же так все время переписываем , то что находится под индексом 0 Потому , что когда добавляем память в стак ($sp) addi $sp, $sp, -4, он добавляет , а каждый последующий индекс обнуляется? Но на самом уделе увеличивается на 4 ?
Artur
То есть в 218 строке мы на самом деле обращаемся уже к индексу под номером 4 , а не 0 верно?
Artur
Почему в этой картинке когда мы сделали сразу -8 мы должны менять индексы , а в предыдущем варианте нет?
s54820
addi $sp, $sp, -4 sw $ra, 0($sp) addi $sp, $sp, -4 sw $s0, 0($sp) Почему все время обращаемся к индексу 0 ? Мы же так все время переписываем , то что находится под индексом 0 Потому , что когда добавляем память в стак ($sp) addi $sp, $sp, -4, он добавляет , а каждый последующий индекс обнуляется? Но на самом уделе увеличивается на 4 ?
Нет там никаких индексов. Есть смещение относительно sp. По адресу sp (sp +0) у тебя что-то лежит, ты это затирать не хочешь. Поэтому ты вычитаешь 4 (одно слово), сдвигая sp к младшим адресам, и теперь по адресу sp + 0 у тебя ничего не лежит (а то, что лежало раньше, лежит уже по sp + 4), и ты по sp + 0 кладёшь содержимое регистра. Во второй картинке тебе нужно положить сразу два регистра. Ты мог бы сделать точно так же, как и выше: вычли 4, положили, вычли 4, положили; но можешь и сразу освободить место под два слова (2 * 4 = 8), и положить значения по +0 и +4. Точно так же, на первой картинке ты мог бы вычесть сразу 24, а потом складывать по +0, +4, +8, +12, +16, +20 (decimal). Вообще, нет смысла объяснять это словами. Возьми эмулятор и посмотри, как оно работает. Ну или на бумажке нарисуй.
Artur
Нет там никаких индексов. Есть смещение относительно sp. По адресу sp (sp +0) у тебя что-то лежит, ты это затирать не хочешь. Поэтому ты вычитаешь 4 (одно слово), сдвигая sp к младшим адресам, и теперь по адресу sp + 0 у тебя ничего не лежит (а то, что лежало раньше, лежит уже по sp + 4), и ты по sp + 0 кладёшь содержимое регистра. Во второй картинке тебе нужно положить сразу два регистра. Ты мог бы сделать точно так же, как и выше: вычли 4, положили, вычли 4, положили; но можешь и сразу освободить место под два слова (2 * 4 = 8), и положить значения по +0 и +4. Точно так же, на первой картинке ты мог бы вычесть сразу 24, а потом складывать по +0, +4, +8, +12, +16, +20 (decimal). Вообще, нет смысла объяснять это словами. Возьми эмулятор и посмотри, как оно работает. Ну или на бумажке нарисуй.
1) addi $sp, $sp, -8 # (освободит место под два слова , сейчас в $sp свободны 0,1,2,3,4,5,6,7 байты - верно??) 2) sw $s0, 0($sp) # mem ($sp + 0) = $s0 тоесть загружаю в адреса памяти mem ($sp + 0) = 1 byte от $s0 mem ($sp + 1)= 2 byte от $s0 mem ($sp + 2)= 3 byte от $s0 mem ($sp + 3)= 4 byte от $s0 @s54816 Верно написал?
s54820
да
Значит, я чего-то не знаю. Или это макросы, которые делают вот это самое sub/sw.
Artur
Значит, я чего-то не знаю. Или это макросы, которые делают вот это самое sub/sw.
Ой , я наверное перепутал, мы закидываем данные через sw/lw
Artur
@s54816 То есть , сначала в первой строке я резервирую память ( в данном примере 4 байта) для своих нужд, а то что было под индексом 0 переносится на 4 , что было под индексом 4 переносится на 8 и так далее. А затем в комндe sw я уже в адрес ($sp +0) в первые четыре байта ( 0 - 3) уже закидываю значение своего регистра в данном примере значение $ra Верно?
Artur
***Вытаскивать значение из $sp я не могу обращаясь по индексу например не могу выполнить такую комнаду lw $s4, 4($sp) так как у $sp я могу вытащить только последнее значение?
s54820
***Вытаскивать значение из $sp я не могу обращаясь по индексу например не могу выполнить такую комнаду lw $s4, 4($sp) так как у $sp я могу вытащить только последнее значение?
Кто же тебе запрещает? Можешь точно так же, как кладёшь, вытащить и последнее, и предпоследнее, и вообще какое угодно, если это имеет смысл.
s54820
А как же принцип работы стек last in — first out, «последним пришёл — первым вышел»
Так это абстрактный стек в книжке. А на деле у тебя массив с индексом. И это про «вышел». Да, если тебе нужно не только прочитать, но и удалить, то удалять придётся начиная с верхушки. А вот читать — читай.
Max
всем привет, в насме есть dup, который создает Х дубликатов одного значения. Есть что-то похожее в GAS?
Max
проще говоря : в насме я сделал zeroes: db 16 dup 0x00, как мне теперь такое же в GAS написать?
Artur
maxElements: .byte 50 Это значит , maxElements ссылается на 1 байт = 8 бит значение которых равно 50 ?
vi'talij
какая последняя версия IDA запускается на XP и XP 64?
dukeBarman
какая последняя версия IDA запускается на XP и XP 64?
по-моему 6 я еще запускать умудрялся (которая версия для ознакомления конечно от eset), но не исключено, что путаю с Win 7
vi'talij
А зачем под ХР запускать её?
у меня ubuntu. на ней qemu. мне что, десятку ставить?
dukeBarman
Ну 7ку вполне себе
vi'talij
Ну 7ку вполне себе
нет, не вполне. диск не резиновый.
­
IDA 6.8
vi'talij
А вино если?
глючное. кнопки отказывают.
Eugene
XP - старьё. Если не 7, то хотя бы Vista, там много чего нового.
Eugene
Хотя лично я на ней не работал, сразу на 7 перескочил с ХРени.
Yura
Ахах
dukeBarman
Ага, а потом кнопки не те, звук чуть громче, хочу еще чтобы кофе варила...
Dm
Ребят, как реализовать работу с отрецательными числами в асм?
Max
Ребят, как реализовать работу с отрецательными числами в асм?
так она уже реализована, не? или у тебя числа какие-то не такие? (типа 40 битов целая часть, 24 - дробная)?
Eugene
Ребят, как реализовать работу с отрецательными числами в асм?
Чтобы ответить на вопрос, надо понимать, что конкретно ты хочешь. Мне кажется, с такими вопросами надо в НЕфлудильню :) Там "про АСМ" означает, что чат про асм. А тут "ПРО асм" означает, что обсуждают неновичковские вопросы :)
Eugene
Ссылка в описании.
Aiwan \ (•◡•) / _bot
nano
Даров. Можно как-то сохранить например в текстовом виде инструкции, которые проходит программа в данный момент, от точки до точки? Например возьмем в пример дебагер x64dbg. В примере на картинке есть начало с mov r15, rsp и снизу до mov r15, rsp Если я нажму f9, то он выполнит все от начала и до конца. Но мне нужно. Чтобы вмести с выполнением он еще и записал мне в текстовик (линейно), какие инструкции он проходит. В том числе, и что внутри call. Можно это как-то сделать внутри этой или другой программе, хотя-бы примерно?
nano
Меню трассировка, Trace into, там можно выбрать запись в файл, в поле Log text напиши то, что там сереньким подсказывают. Трассировка в x64dbg сделана для галочки, в OllyDbg было гораздо удобнее.
Да получилось. Спасибо. Писец в одной функции 252000 инструкций. Пойду разбирать. Это я еще хотел дамп стека и регистров сделать отдельно после каждой инсрукции😳😳😳
Anonymous
Коллеги, подскажите по Гидре: Есть код, выглядит так if (((char)local_d0 == '\0') && (local_d0._1_1_ == '\0')) { хочу чтобы Гидра не переводила мои байты в экранированные, хочу чтобы они показывались как константы, т.е выглядело как if (((char)local_d0 == 0x00) && (local_d0._1_1_ == 0x00)) { В Иде представление типа меняется с помощью кнопочки "H", а в Гидре - как?
nano
Меню трассировка, Trace into, там можно выбрать запись в файл, в поле Log text напиши то, что там сереньким подсказывают. Трассировка в x64dbg сделана для галочки, в OllyDbg было гораздо удобнее.
Конечно, и вправду ужас по управлению. Не хватает сделать несколько условий и банальный фильтр циклов и регистров. А так бы очень облегчило разбор функций. Посмотрю, что там по плагинам собирать можно. Может получится сделать экспорт схемы в html
Ruslan
как отменить это действие?
Aiwan \ (•◡•) / _bot
как отменить это действие?
переходом на адрес как ты это сделал до этого действия
s54820
как отменить это действие?
Undefine и создать заново, что было. Undo в IDA нет и не будет.