Size: a a a

Ассемблер

2021 June 06

АШ

Алексей Шведов... in Ассемблер
Лонгмод
источник

LW

Loren White in Ассемблер
ff 25 для лонгмода юзай. А тот, что ты выше указал, он кажись 32 бита извлекает всего лишь из памяти по адресу
источник

КП

Котеечко Пухнастиньк... in Ассемблер
спс
источник

s

s54816 in Ассемблер
Это не ляп. В мипсе и в некоторых других RISC-процессорах есть такая штука, как delay slot. Пока выполнялся джамп, конвейер процессора уже загрузил следующую за ним инструкцию. Но конвейер вроде бы надо сбрасывать, потому что мы перешли по новому адресу. А инструкцию терять жалко. Поэтому пока грузится первая инструкция по новому адресу, процессор выполняет уже загруженную — ту, которая шла за джампом. Иногда, если выполнять ничего не нужно, там стоит nop.
источник

АШ

Алексей Шведов... in Ассемблер
Что FF25, что FF2425 будут извлекать значение по адресу, и делать прыжок.
источник

LW

Loren White in Ассемблер
да, но две ссылки в гугле сказали, что второй опкод извлекает 32 бита
источник

AM

Alexander Morozov in Ассемблер
Переводя на простой язык, можно в коде поставить команду после jaump и процессор ее выполнит в то время, пока выполняетcя jaump?
источник

s

s54816 in Ассемблер
Да. Можно в уме переставлять их местами.
источник

АШ

Алексей Шведов... in Ассемблер
Нет, оба берут 64
источник

АШ

Алексей Шведов... in Ассемблер
Прямо сейчас проверял
источник

LW

Loren White in Ассемблер
а смысл делать два одинаковых по поведению опкода, но с разной длиной ? ) даже если 64 берут оба, то как минимум ff 25 короче
источник

АШ

Алексей Шведов... in Ассемблер
ff2425 near
источник

АШ

Алексей Шведов... in Ассемблер
ff25 far
источник

LW

Loren White in Ассемблер
а
источник

LW

Loren White in Ассемблер
увот оно что
источник

АШ

Алексей Шведов... in Ассемблер
источник

s

s54816 in Ассемблер
А ff 2c и ff 2d тогда что? ;-)
источник

АШ

Алексей Шведов... in Ассемблер
Тоже far
источник

s

s54816 in Ассемблер
ff 2c → ff 00'101'100; mode=00b, opcode extension 101 = 5, r/m = 100 смотрим на твою ссылку — FF/5 как раз jmp far.
ff 24 → ff 00'100'100, opcode extension 100 = 4, остальное так же, смотрим — FF/4 написано jump near. Для 25 будет то же самое, потому что младший бит на опкод не влияет. А разница в том, что mode=00, r/m=100 — это признак того, что за ModR/M идёт SIB. В 32-битном режиме разницы нет, просто другой вариант кодирования. А в 64-битном режиме ff 24 25 читает по 32-битному абсолютному адресу, расширенному до 64 бит, а ff 25 тоже по 32-битному, но RIP-relative.
источник

АШ

Алексей Шведов... in Ассемблер
А, теперь понятно)
источник