Я использую средства Objective-C NSMethodSignature / @encode для выполнения некоторых межъязыковых преобразований типов данных, что означает, что мне нужно иметь возможность программно копировать значения в структуру, описанную в формате @encode (). например, у меня может быть 4 числа с плавающей запятой, и мне нужно вставить их в CGRect, который представляет собой структуру, содержащую 2 структуры, каждая из которых содержит 2 числа с плавающей точкой. В терминологии @encode тип таков:
{CGRect={CGPoint=ff}{CGSize=ff}}
Для этого мне нужно уметь угадывать структуру структуры, зная только типы данных примитивных членов структуры - в этом случае 4 с плавающей запятой.
Похоже, что исторически существовали два разных соглашения для выравнивания структуры ARM. Один из них заключался в выравнивании всех членов структуры по размеру границы, который удовлетворял бы наибольшему члену. Другим было выравнивание всех элементов по размеру границы, соответствующему типу данных каждого элемента.
Что используется в OS X / iPhone OS, как на ARM, так и на x86 / x86_64?