Discussion:
ASM + Pascal calling question
(too old to reply)
Jim Leonard
2011-02-23 17:08:15 UTC
Permalink
I'm aware that TP7/BP7 pascal programs can call external assembler
routines. But is the opposite possible? Meaning, can assembler
programs call routines in precompiled pascal units? C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Markus Humm
2011-02-23 19:21:36 UTC
Permalink
Post by Jim Leonard
I'm aware that TP7/BP7 pascal programs can call external assembler
routines. But is the opposite possible? Meaning, can assembler
programs call routines in precompiled pascal units? C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Normally not as the TPU format of compiled units changes from version to
version. Imho it doesn't make much sense either as you'd use ASM
normally for performance critical functionality and not for "boiler
plate" stuff like menus etc.

Greetings

Markus
Marco van de Voort
2011-02-23 19:31:56 UTC
Permalink
Post by Jim Leonard
I'm aware that TP7/BP7 pascal programs can call external assembler
routines. But is the opposite possible? Meaning, can assembler
programs call routines in precompiled pascal units? C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Yes. Because of the same reason. Both C and Pascal are translated to
assembler, so in the compiled translation assembler already calls pascal/C
routines.
Jim Leonard
2011-02-23 21:43:42 UTC
Permalink
Post by Marco van de Voort
Post by Jim Leonard
I'm aware that TP7/BP7 pascal programs can call external assembler
routines.  But is the opposite possible?  Meaning, can assembler
programs call routines in precompiled pascal units?  C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Yes. Because of the same reason. Both C and Pascal are translated to
assembler, so in the compiled translation assembler already calls pascal/C
routines.
What I meant was: From my assembler program, can I link in routines
from precompiled pascal units?

I'm beginning to think not, but would like confirmation either way.
Robert AH Prins
2011-02-24 00:54:31 UTC
Permalink
Post by Jim Leonard
Post by Marco van de Voort
Post by Jim Leonard
I'm aware that TP7/BP7 pascal programs can call external assembler
routines. But is the opposite possible? Meaning, can assembler
programs call routines in precompiled pascal units? C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Yes. Because of the same reason. Both C and Pascal are translated to
assembler, so in the compiled translation assembler already calls pascal/C
routines.
What I meant was: From my assembler program, can I link in routines
from precompiled pascal units?
I'm beginning to think not, but would like confirmation either way.
No, as TPU's contain, in essence, unlinked .OBJ code + separate
relocation tables. Next to that, Borland never disclosed the format of
TPU files, and all but he simplest Pascal code uses code from system.tpu.

Robert
--
Robert AH Prins
spamtrap(a)prino(d)org
Marco van de Voort
2011-02-24 13:05:56 UTC
Permalink
Post by Robert AH Prins
Post by Jim Leonard
What I meant was: From my assembler program, can I link in routines
from precompiled pascal units?
I'm beginning to think not, but would like confirmation either way.
No, as TPU's contain, in essence, unlinked .OBJ code + separate
relocation tables. Next to that, Borland never disclosed the format of
TPU files, and all but he simplest Pascal code uses code from system.tpu.
Hmm, yes, linking might be a problem.

I can vaguely remember there was a tpu2obj on simtel. Never tried that route
though. Considering its date (1988) it is probably for very old TPs.

Other then that, maybe link it to an overlay on a fixed address and try to
load that? Still not an easy solution.
Dr J R Stockton
2011-02-24 20:35:57 UTC
Permalink
In comp.lang.pascal.borland message <c6ed933a-41e3-4ee3-94b4-97427e69617
Post by Jim Leonard
Post by Marco van de Voort
Post by Jim Leonard
I'm aware that TP7/BP7 pascal programs can call external assembler
routines.  But is the opposite possible?  Meaning, can assembler
programs call routines in precompiled pascal units?  C and assembly
have this relationship (you can call C library routines from asm, and
asm libs from C) but was curious if TP7+Tasm had this same
relationship.
Yes. Because of the same reason. Both C and Pascal are translated to
assembler, so in the compiled translation assembler already calls pascal/C
routines.
What I meant was: From my assembler program, can I link in routines
from precompiled pascal units?
I'm beginning to think not, but would like confirmation either way.
Undoubtedly it is possible, but you might have to write your own linker,
or a pre-processor for the Pascal, etc.


What might serve more easily is to take your ASM code, and drop it into
a Pascal program that reads essentially

{ whatever makes code in your Pascal units available }
begin
ASM
{ what you have in ASM, tweaked }
END
end.

That ought to work, but the tweak could be large, and your asm code
would need to understand the Pascal call interface.
--
(c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05 IE 8.
Web <http://www.merlyn.demon.co.uk/> - FAQ-type topics, acronyms, and links.
Command-prompt MiniTrue is useful for viewing/searching/altering files. Free,
DOS/Win/UNIX now 2.0.6; see <URL:http://www.merlyn.demon.co.uk/pc-links.htm>.
Jim Leonard
2011-02-25 15:10:46 UTC
Permalink
        { whatever makes code in your Pascal units available }
        begin
        ASM
        { what you have in ASM, tweaked }
        END
        end.
I dislike doing that because I don't have access to some assembler
niceties, like macros.

No worries, I'll just continue to develop asm and link in
external .objs, I guess.

Loading...