Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is FAR PASCAL?

Tags:

c++

c

syntax

I was wondering why in some source code there are these macros like FAR and PASCAL. What do they mean and do?

like image 789
jmasterx Avatar asked May 05 '10 14:05

jmasterx


1 Answers

  • PASCAL: It's related to a calling convention. The parameters are pushed on the stack in left-to-right order (opposite of cdecl), and the callee is responsible for balancing the stack before return.

    This calling convention was common in the following 16 bit APIs: OS/2 1.x and Microsoft Windows 3.x. There's some dispute over whether it was used by Borland Delphi 1.x

  • FAR: In a segmented architecture computer, a far pointer is a pointer which includes a segment selector, making it possible to point to addresses outside of the current segment.

For completeness, FAR and PASCAL are prepreocessor macros that, when compiled for 16-bit systems, expand to the keywords that were necessary to declare the calling convention and pointer size. On 32-bit systems, they generally expand to nothing (unless you have a weird default calling convention). The macros are retained for backward compatibility {hat/tip: comment from Adrian McCarthy}

like image 186
DVK Avatar answered Sep 28 '22 02:09

DVK