История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Это медленно.
Ты по другому рекурсию и не сделаешь, или если регистры кончились. А если регистров хватает, то что их искать, описано какие сохраняются между вызовами, а какие нет.
Так что `a = b` это в общем случае далеко не один `mov`.
Ну в случае С, это может быть memcpy структур, вот как оно делается, можно написать макрос что бы указывать всего одну команду и размер:
mov rdi, %dst%
mov rsi, %src%
mov rcx, %sizeof%
rep movsb
struc point_t {
.x dd ?
.y dd ?
}
macro MEMCPY DST, SRC, SIZEOF {
mov rdi, DST
mov rsi, SRC
mov rcx, SIZEOF
rep movsb
}
MEMCPY a, b, sizeof.point_t
Исходная версия
MOPKOBKA,
:
Это медленно.
Ты по другому рекурсию и не сделаешь, или если регистры кончились. А если регистров хватает, то что их искать, описано какие сохраняются между вызовами, а какие нет.
Так что `a = b` это в общем случае далеко не один `mov`.
Ну в случае С, это может быть memcpy структур, вот как оно делается, можно написать макрос что бы указывать всего одну команду и размер:
mov rdi, %dst%
mov rsi, %src%
mov rcx, %sizeof%
rep movsb