Cómo se relacionan entre sí los tipos básicos de Delphi?

Delphi siempre ha admitido algunos tipos numéricos básicos y me preguntaba cómo se relacionan entre sí.

En Delphi 2007 encontré estas declaraciones (algunas son conflictivas, otras son simples alias):

Types.pas:

DWORD = LongWord;
Largeint = Int64;

getmem.inc:

DWORD = Integer;

Windows.pas:

DWORD = Types.DWORD;
SHORT = Smallint;
UINT = LongWord;
ULONG = Cardinal;
LONGLONG = Int64;
TLargeInteger = Int64;
ULONGLONG = UInt64;

Esto me lleva a pensar que los tipos numéricos con signo base son SmallInt, Integer e Int64. Sin firmar, hay Byte, WORD y UInt64. Pero, ¿cuál es la diferencia entre Cardinal y LongWord? (Por cierto, ¿cuál es la carcasa original y prevista para estos tipos?)

¿Y hay un tipo para enteros de 8 bits con signo (Int8)?

// Int8 = ?unknown?;
UInt8 = Byte;
Int16 = SmallInt;
UInt16 = Word;
Int32 = Integer;
UInt32 = LongWord;
// Int64 already exists
// UInt64 already exists

Por último, ¿cómo debo definir Int y UInt, especialmente con respecto a la compatibilidad C / C ++ y un cambio futuro a otras plataformas (posiblemente también de 64 bits)? (Una pregunta relacionada es, por supuesto, ¿cómo se definirán los distintos tipos numéricos en Delphi de 64 bits?)

Respuestas a la pregunta(8)

Su respuesta a la pregunta