Не понимаю, как работает перемещение на уровне ассемблера?
Ведь в ассемблере нет операции перемещения, но получается что перемещение быстрее.
Как так?
Не понимаю, как работает перемещение на уровне ассемблера?
Ведь в ассемблере нет операции перемещения, но получается что перемещение быстрее.
Как так?
Нет никакой "семантики перемещения" на уровне ассемблера.
Семантика перемещения - это абстрактная высокоуровневая концепция, т.е. концепция уровня языка, которая опирается на концепции категорий выражений (lvalue, rvalue, xvalue) и на сопутствующие правила разрешения перегрузки (overload resolution). С точки зрения производительности, цель семантики перемещения - организовать на уровне языка поддержку безопасного выбора между выполнением дорогого "глубокого" (deep) копирования или дешевого "мелкого" (shallow) копирования.
Получающийся в результате машинный код ничем не отличается от машинного кода, который мы получали и раньше, до появления в языке семантики перемещения. Просто раньше мы реализовывали семантику перемещения "вручную", а теперь ее поддержка появилась на уровне языка.