Зарезервируйте свое заключительное пространство прежде, затем используйте добавлять метод с буфером. Например, скажите, что Вы ожидаете, что Ваша заключительная длина строки будет 1 миллионом символов:
std::string s;
s.reserve(1000000);
while (whatever)
{
s.append(buf,len);
}
Размер машинной инструкции зависит от архитектуры процессора - существуют архитектуры с инструкциями фиксированного размера, но вы, очевидно, ссылаетесь на IA-32 и Intel 64, и у них сильно различаются длины инструкций. . Указатель инструкции, конечно, всегда увеличивается на длину обрабатываемой инструкции.
Вы можете загрузить руководства IA-32 и Intel 64 от Intel - они содержат почти все, что вы можете знать об архитектуре. Вы можете найти карту кодов операций и формат набора инструкций в Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 2B: Справочник по набору команд, Новая Зеландия на страницах с 623 по 768.
Размер машинного кода зависит от архитектуры процессора.
Например, на IA-32 размер инструкции варьируется от 1 до 6 байтов (или более).