Auch die Reihenfolge ändert die Richtung.
Das cdecl; scheint keinen Einfluss zu haben.
Code: Alles auswählen
program Project1;
procedure test(a, b, c: integer); cdecl;
begin
WriteLn(PtrUInt(@a)); // xxx328
WriteLn(PtrUInt(@b)); // xxx320
WriteLn(PtrUInt(@c)); // xxx312
end;
begin
test(1, 1, 1);
end.
Code: Alles auswählen
#include <stdio.h>
void test(int a,int b,int c)
{
printf("addr: %i\n", &a); // xxx740
printf("addr: %i\n", &b); // xxx744
printf("addr: %i\n", &c); // xxx748
}
int main(int argc, char *argv[])
{
test(1,1,1);
return 0;}
Dies würde ja Knallen, wen Pascal 4Byte Abstand hat und in C würden 8Byte abgearbeitet werden.
Wird dies irgendwie über den ELF-Standard geregelt ?