Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to align stack variable to 16byte boundary [duplicate]

I have the following local variable (that will get stored in the stack).

struct test1 {
  int a;
  int b;
  char c;
};

How do I align the starting address of integer a to a 16byte boundary in the stack?

I am running this C code on a custom written MIPS ISA processor.

like image 536
Sudharsan Seshadri Avatar asked Dec 04 '25 15:12

Sudharsan Seshadri


1 Answers

Here is some non-standard way of aligning your data.

struct test1 *pdata;

// here we assume data on stack is word aligned
pdata = alloca(sizeof(*pdata) + 14);
if (pdata & 0xF)
{
    pdata = (unsigned char*)pdata + 16 - (pdata & 0xF);
}
like image 90
Valeri Atamaniouk Avatar answered Dec 07 '25 04:12

Valeri Atamaniouk