TIP: Click on subject to list as thread! ANSI
echo: aust_c_here
to: Paul Edwards
from: Ian Binnie
date: 1996-05-09 15:01:40
subject: C Compiler

-=> Quoting Paul Edwards to Ian Binnie <=-

 IB> The bad news is that the assembler uses a custom syntax, and the object
 IB> format is also proprietary. 

 IB> This enables the compiler to produce very fast compact code but...

The "very fast compact code" was meant to bind with "the
object format"
not "assembler". I may be talking through my hat here as I am not an
expert on 80x86 linking, but I have compared the code with other
compilers and stand by the result. This may be due to compiler passing
the first 2 (int size) arguments in registers and implementing stack
deallocation in the function itself.

The real reason for proprietary assembler may be historical, as pointed
out by others.

PS the assembler can produce Intel object code, but I have never tried
this.

 PE> Surely it doesn't optimise the assembler code?

All compiled code produces assembler. The code generator does global
optimisation, but a separate optimiser pass between the code generator
and assembler performs peephole optimisation and presumably operates on
the assembler code.
 
 PE> I am not very familiar with DOS programming, but looked up that in
 PE> one of my compiler's manuals, and indeed, it would seem that doing
 PE> something like that, and just providing assembler for intdos(), if
 PE> the compiler didn't support it, would be better.

I used to include a fair amount of assembler code in C programs, but now
I rarely need to use it. (Every time I wrote some decent assembler
HI-TECH included it in the compiler.) Even interrupt service routines can
be coded in (Pacific) C; my communications programs are totally written
in C. I do include the occasional in line "asm(CLI)"
"asm(STI)" and use
assembler when adapting other programs.

 PE> In fact, spawn.asm can be taken out completely, and if I could
 PE> likely write most of the vio routines in C too, possibly even 
 PE> without performance penalty.  That would bring me closer to being
 PE> able to use Pacific C.  I'll have to look into it.

There should be little need for assembler if the compiler provides
access to system calls unless it is an extension to the language e.g.
long integer multiply for fractals etc. 
--- Blue Wave/386 v2.30
* Origin: Sydney PC Users Group Mail Exchange (3:712/505)
SEEN-BY: 50/99 78/0 620/243 623/630 711/401 409 410 413 430 808 809 932 934
SEEN-BY: 712/311 390 407 411 505 506 515 517 535 617 624 704 713/306 888
SEEN-BY: 714/906 800/1 7877/2809
@PATH: 712/505 517 515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.