Size: a a a

2021 May 25

AK

Artur Kopytin in pro.asm
Почему в этой картинке когда мы сделали сразу -8 мы должны менять индексы , а в предыдущем варианте нет?
источник

s

s54816 in pro.asm
Нет там никаких индексов. Есть смещение относительно 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). Вообще, нет смысла объяснять это словами. Возьми эмулятор и посмотри, как оно работает. Ну или на бумажке нарисуй.
источник
2021 May 26

AK

Artur Kopytin in pro.asm
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 Верно написал?
источник

s

s54816 in pro.asm
Да, всё верно. Но «освободит место» — это я не очень правильно выразился. Надо было сказать «зарезервирует».
источник

AK

Artur Kopytin in pro.asm
А в каком случае тогда мне требуется  пользоваться командами push/pop?
источник

s

s54816 in pro.asm
А в MIPS они есть?
источник

AK

Artur Kopytin in pro.asm
да
источник

s

s54816 in pro.asm
Значит, я чего-то не знаю. Или это макросы, которые делают вот это самое sub/sw.
источник

AK

Artur Kopytin in pro.asm
Ой , я наверное перепутал, мы закидываем данные через sw/lw
источник

AK

Artur Kopytin in pro.asm
@s54816
То есть , сначала в первой строке я резервирую память ( в данном примере 4 байта) для своих нужд, а то что было под индексом 0 переносится на 4 , что было под индексом 4 переносится на 8 и так далее.
А затем в комндe sw я уже в адрес ($sp +0) в первые четыре байта ( 0 - 3) уже закидываю значение своего регистра в данном примере значение $ra

Верно?
источник

AK

Artur Kopytin in pro.asm
***Вытаскивать значение из $sp я не могу обращаясь по индексу например  не могу выполнить такую комнаду lw $s4, 4($sp) так как у $sp я могу вытащить только последнее значение?
источник

s

s54816 in pro.asm
Кто же тебе запрещает? Можешь точно так же, как кладёшь, вытащить и последнее, и предпоследнее, и вообще какое угодно, если это имеет смысл.
источник

AK

Artur Kopytin in pro.asm
А как же принцип работы стек last in — first out, «последним пришёл — первым вышел»
источник

s

s54816 in pro.asm
Так это абстрактный стек в книжке. А на деле у тебя массив с индексом. И это про «вышел». Да, если тебе нужно не только прочитать, но и удалить, то удалять придётся начиная с верхушки. А вот читать — читай.
источник

MA

Max Azatian in pro.asm
всем привет, в насме есть dup, который создает Х дубликатов одного значения.
Есть что-то похожее в GAS?
источник

MA

Max Azatian in pro.asm
проще говоря : в насме я сделал
zeroes:   db 16 dup 0x00
, как мне теперь такое же в GAS написать?
источник

s

s54816 in pro.asm
.dcb.b 16, 0
источник
2021 May 28

AK

Artur Kopytin in pro.asm
maxElements: .byte  50
Это значит , maxElements ссылается на 1 байт = 8 бит значение которых равно 50 ?
источник
2021 June 01

ВХ

Віталій Халак... in pro.asm
какая последняя версия IDA запускается на XP и XP 64?
источник
2021 June 02

d

dukeBarman in pro.asm
по-моему 6 я еще запускать умудрялся (которая версия для ознакомления конечно от eset), но не исключено, что путаю с Win 7
источник