Это не совсем стандартно, как все возвращается, но обычно это в RAX.В вашем примере, предполагая, что t_test :: i и t_test :: c являются единственными членами t_test и имеют максимум 32 бита каждый, вся структура может помещаться в 64-битный регистр, поэтому она просто возвращает значения напрямую через RAXи обычно вещи, которые могут поместиться в 2 регистра, возвращаются в RAX: RDX (или RDX: RAX, я забыл общий порядок).
Для более чем двух регистров обычно требуется передача скрытого параметра указателяв качестве первого параметра, который указывает на объект в вызывающей функции (обычно тот, которому непосредственно присваивается возвращаемое значение).Затем этот объект записывается перед возвратом из вызываемой функции (обычно копируется из локальной структуры, используемой в вызываемой функции), и обычно тот же самый указатель, который был передан, возвращается в RAX.
EAX / EDX может бытьвместо RAX / RDX в 32-битных системах x86.
С соглашениями, которые передают указатель "this" в стеке (как стандартные соглашения x86 GCC), указатель возвращаемого значения обычно передается как скрытая секунда.параметр вместо первого.