Size: a a a

Ассемблер

2021 March 30

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
скорость доступа - это к памяти относится, скорость работы - к инструкциям
источник

SZ

Sergey Zhmylove in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
вопрос про скорость работы, а не скорость доступа
Скорость работы человека с регистром %rax на 25% меньше, чем с %r8, потому что требуется ввести на 1 символ больше
источник

SZ

Sergey Zhmylove in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
скорость доступа - это к памяти относится, скорость работы - к инструкциям
Регистры чем не память? Регистровая память, таки
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Sergey Zhmylove
Регистры чем не память? Регистровая память, таки
я тебе о чем и говорю, он задал вопрос неправильно. скорость работы относится к инструкциям, скорость доступа к памяти
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
он же спрасил про скорость РАБОТЫ памяти
источник

AM

Alexander Morozov in Ассемблер
Как-то все сразу в терминологию углубились. Я имел в виду следующее: допустим надо скопировать нечто в rax/eax/ax. Будет-ли одинаковым время выполнения операции для rbx/ebx/bx, rcx/ecx/cx, rdx/edx/dx и т.д.
источник

SZ

Sergey Zhmylove in Ассемблер
Alexander Morozov
Как-то все сразу в терминологию углубились. Я имел в виду следующее: допустим надо скопировать нечто в rax/eax/ax. Будет-ли одинаковым время выполнения операции для rbx/ebx/bx, rcx/ecx/cx, rdx/edx/dx и т.д.
Да
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Alexander Morozov
Как-то все сразу в терминологию углубились. Я имел в виду следующее: допустим надо скопировать нечто в rax/eax/ax. Будет-ли одинаковым время выполнения операции для rbx/ebx/bx, rcx/ecx/cx, rdx/edx/dx и т.д.
нет
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Я когда-то давно заглядывал в справочник по 80386+/-, так там например было описано что пары регистров выполняют операции с разным количеством тактов... Например: [bx+si] и [bp+di] быстрее нежели если делать [bx+di] и [bp+si]... А как на современных, не знаю...
пример привели
источник

SZ

Sergey Zhmylove in Ассемблер
Ну ты сейчас ещё скажи, что из-за квантовых эффектов у двух любых различных событий не может быть одинакового времени выполнения
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Alexander Morozov
Как-то все сразу в терминологию углубились. Я имел в виду следующее: допустим надо скопировать нечто в rax/eax/ax. Будет-ли одинаковым время выполнения операции для rbx/ebx/bx, rcx/ecx/cx, rdx/edx/dx и т.д.
если приводишь пример приводи его не эфимерно, а сконкретикой
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Парни! Я, наконец, допилил первую версию "Floating-point Instruction Bytecode Generator & Recompiler" (и сделал более или менее внятное описание) и готов показать его вам ✌️

Модуль и демо лежат здесь: https://www.pouet.net/prod.php?which=88492
Описание по ссылке. Более развёрнутое — внутри модуля.
Ориентировано, в первую очередь, на сайзкодинг (экономию пространства).
Вкратце:

 >>> WHAT IS THIS? <<<

In fact, this is a packer of x86 FPU instructions with ≈ 3-4x efficiency (not taking into account recompiler code and constants).
All you need is just define some symbolic constants, include this file in your fasm project, use a few macros and perform a call to recompiled function.

 >>> FEATURES <<<

• Definition of FPU operations in easy to read format of Reverse Polish Notation (RPN).
• Flexibly customizable recompiler which creates native x86 function from bytecode (that is, fast for execution).
• Native code copier (so you can mix FPU instructions with native x86 code inside bytecode block).
• Declaration of up to 11-13 bytecode instructions associated with 2-byte FPU (...or not only FPU?...) instructions (this number is sufficient for most purposes).
• Definition of up to 17 2-byte integer and floating-point constants.
• Definition of up to 16 4-byte floating-point variables.
• Declaration of unlimited subfunctions with custom names inside bytecode block.
• Possibility to override some predefined bytecode instructions associated with native x86 instructions.
• The size of recompiler is ≈ 50..74 bytes (for 1..13 types of bytecode instructions, with no support of native code copier, variables and subfunctions) to ≈ 65..85 / 76..96 bytes (for 1..11 types of bytecode instructions, with max functionality) including writting of input stream offset to register. This size can vary depending on used options of macro 'fpb_recompile!'.

 >>> NOTES <<<

Brief statistics of HerbaKaif intro:
- bytecode contains 244 nibbles (= 122 bytes = 169 opcodes; average length of 1 bytecode instruction ≈ 1.44 nibbles ≈ 0.72 bytes);
- size of recompiled function = 413 bytes (compression ratio ≈ 3.39x; average length of 1 unpacked native x86 instruction ≈ 2.44 bytes);
- size of recompiler = 74 bytes (including writting of input stream offset to register, although this is partly part of another code);
- compression ratio including bytecode recompiler = 413/(122+74) ≈ 2.11x.
источник

d

disba1ancer in Ассемблер
Alexander Morozov
Кстати вопрос возник. А с точки зрения скорости работы регистры rax/eax/ax, rbx/ebx/bx, rcx/ecx/cx, rdx/edx/dx, r8, ..., r15 одинаковы или имеется конструктивно обусловленная разница?
Не думай об он достаточно быстры
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Saenro T
Я когда-то давно заглядывал в справочник по 80386+/-, так там например было описано что пары регистров выполняют операции с разным количеством тактов... Например: [bx+si] и [bp+di] быстрее нежели если делать [bx+di] и [bp+si]... А как на современных, не знаю...
На 8086 было такое, и работа с al/ax была быстрее, насколько я помню. А сейчас это только псевдонимы. Реальных (физических) регистров гораздо больше. И тот же rax может быть привязан к разным регистрам в разные моменты времени. Скажем:

mov eax,[ecx]
cdq
idiv ebx
mov eax,[ecx+4]
add [esi],eax
xor eax,eax

Здесь все 3 регистра eax скорее всего будут привязаны к разным физ регистрам, чтобы не создавать зависимости и не останавливать выполнение.
источник

L

Lee in Ассемблер
𝐦𝐚𝐤𝐟𝐥𝐨𝐲
Книга хороша когда у тебя есть цель. Когда цели нету - мало чего впитаешь. Вот я тебе цель и придумал 😉
Не была бы цель, я бы давно забил на всё это. За канал спасибо вам
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
𝐦𝐚𝐤𝐟𝐥𝐨𝐲
Книга хороша когда у тебя есть цель. Когда цели нету - мало чего впитаешь. Вот я тебе цель и придумал 😉
у тя как дела обстоят с  fasmg?
источник

𝐦

𝐦𝐚𝐤𝐟𝐥𝐨𝐲... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
у тя как дела обстоят с  fasmg?
Я сейчас немного в другую область капаю ))
источник

𝐦

𝐦𝐚𝐤𝐟𝐥𝐨𝐲... in Ассемблер
Как-нибудь расскажу
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
𝐦𝐚𝐤𝐟𝐥𝐨𝐲
Как-нибудь расскажу
VM?
источник

𝐦

𝐦𝐚𝐤𝐟𝐥𝐨𝐲... in Ассемблер
В какой то степени.
источник