Код: Выделить всё
#include
struct st1 { int vi[4]; };
struct st2 { char vd[4]; };
class cl {
char v1[4];
char v3[4];
long v2[4];
public:
cl(st1 ss);
cl(st1& s1, int ar2[]);
void elab1(char[],st2);
};
void cl::elab1(char ar1[],st2 st)
{
st.vd[0]='a';
st.vd[1]=3;
st.vd[2]=3;
st.vd[3]=3;
ar1[0]=3;
}
Существует ли какой-либо источник, кроме pdf-файла System V, где это подробно объяснено передача параметров структур данных выполнена? Спасибо
Я также скопировал код на https://godbolt.org/: char ar1[] передается как указатель, и это меня устраивает, а вместо этого массив символы внутри st2 передаются не как указатель на &vd[0].
Код: Выделить всё
cl::elab1(char*, st2):
pushq %rbp
movq %rsp, %rbp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movb $97, -20(%rbp)
movb $3, -19(%rbp)
movb $3, -18(%rbp)
movb $3, -17(%rbp)
movq -16(%rbp), %rax
movb $3, (%rax)
nop
popq %rbp
ret
Many thanks for your help.
Источник: https://stackoverflow.com/questions/781 ... stem-v-abi
Мобильная версия