C Portability Lessons from Weird Machines
&gt; Everyone who writes about programming the Intel 286 says what a pain its segmented memory architecture was<p>Actually this concerns more pre-80286 processors, since 80286 introduced virtual memory, and the segment registers were less prominent in &quot;protected mode&quot;.
Moreover I wouldn&#x27;t say it was a pain, at least at the assembly level, once you understood the trick. C had not concept of segmented memory, so you had to tell the compiler which &quot;memory model&quot; it should use.<p>&gt; One significant quirk is that the machine is very sensitive to data alignment.<p>I remembered from school time about a &quot;barrel register&quot; that allowed to remove this limitation, but it was introduced in 68020.<p>On the topic itself, I like to say that a program is portable if it has been ported once (likewise a module is reusable if it has been reused once). I remember porting a program from a 68K descendant to ARM, the only non-obvious portability issue was that in C, the <i>char</i> type is that the standard doesn&#x27;t mandate the <i>char</i> type to be signed or unsigned (it&#x27;s implementation-defined).