一.為什么要保證堆棧8字節(jié)對(duì)齊AAPCS規(guī)則要求堆棧保持8字節(jié)對(duì)齊。如果不對(duì)齊,調(diào)用一般的函數(shù)也是沒問題的。但是當(dāng)調(diào)用需要嚴(yán)格遵守AAPCS規(guī)則的函數(shù)時(shí)可能會(huì)出錯(cuò)。例如調(diào)用sprintf輸出一個(gè)浮點(diǎn)數(shù)時(shí),棧必須是8字節(jié)對(duì)齊
基于ARM架構(gòu)的處理器的C語言程序設(shè)計(jì)遵循ATPCS(ARM-THUMB procedure call standard)和AAPCS(ARM Application Procedure Call Standard)。ATPCS規(guī)定數(shù)據(jù)棧為FD(滿遞減Full Decrease)類型,并且對(duì)數(shù)據(jù)棧的操作是8字節(jié)對(duì)
在LV和VC的WIN32 DLL之間傳遞下面結(jié)構(gòu)體。 typedef struct npm_axis { int axis_select; int sv;//初始速度 int v;//驅(qū)動(dòng)速度 //int acc;//直線加速度 //int dec;//直線減速度 int sacc;//s曲線加速