[fpc-devel] -i and -Cp

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Wed Oct 17 22:51:01 CEST 2012

Mark Morgan Lloyd wrote:

>> Regarding Marks attempt - if I understand it correctly (based on
>> information in Wikipedia ;-) ), Sparc v7 supports no HW multiplication /
>> division. So a simple check may be to write a one liner containing
>> multiplication, compiling it with any ppcsparc (or ppccrosssparc) while
>> using the -s parameter and then checking the generated assembly for 
>> use of
>> the mul/div asm instructions...

Using this test input:

program test789;

const	a= 3;

var	b, c: integer;

   b := 5;
   c := b * a

Output (test789.s) files are identical containing

# [9] c := b * a
	sethi	%hi(U_P$TEST7_B),%o0
	ldsh	[%lo(U_P$TEST7_B)+%o0],%o0
	smul	%o0,3,%o0

I agree that smul is new to v8, but I don't know to what extent OSes on 
older chips would emulate it (the v8 manual suggests this as a possibility).

In any event, the -Cp parameter doesn't appear to be being carried 
through to the ELF info generated by ld, in all cases it reports

ELF 32-bit MSB executable, SPARC32PLUS, V8+ Required, version 1 (SYSV), 
statically linked, stripped

which is probably inappropriate in the case of v7. Hmm. On a Solaris 8 
system I notice

/usr/local/bin/gld:     ELF 32-bit MSB executable SPARC Version 1, 
dynamically linked, stripped

while FPC compiled on the same machine is described as

/usr/local/bin/fpc:     ELF 32-bit MSB executable SPARC32PLUS Version 1, 
V8+ Required, dynamically linked, not stripped

Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

More information about the fpc-devel mailing list