Discussion:
[Larceny-users] LAP Format
Ray Racine
2008-09-22 02:25:01 UTC
Permalink
Looking for a pointer on how to read the LAP format.
Linux/IAsn/Sassy.

Can't seem to find the exact spot which shows what the numbers map to.

;; (define times 1000000000)
;; compile313 give the following lap file format
((15 100000000) (17 times) (11 unspecified) (37))

Thanks.
Felix Klock
2008-09-22 13:40:45 UTC
Permalink
Ray-

The easiest thing to do is probably to apply the make-readable
procedure to the resulting s-exp. That turns the numbers into symbols
for the different MacScheme assembly opcodes.

If you want an actual table of this mapping, let me know and I'll send
you code that generates one.

-Felix
Post by Ray Racine
Looking for a pointer on how to read the LAP format.
Linux/IAsn/Sassy.
Can't seem to find the exact spot which shows what the numbers map to.
;; (define times 1000000000)
;; compile313 give the following lap file format
((15 100000000) (17 times) (11 unspecified) (37))
Thanks.
_______________________________________________
Larceny-users mailing list
https://lists.ccs.neu.edu/bin/listinfo/larceny-users
Felix Klock
2008-09-22 21:56:43 UTC
Permalink
Ray-

Oh, I'm sorry Ray! I wrote "make-readable" when I should have written
readify-lap

readify-lap is available in the twobit.heap, but not in the larceny.heap

Also in the twobit.heap, the opcodes are all in a table (the same one
readify-lap uses) named *mnemonic-names*; see below.

If you do not have a twobit.heap, then just follow the standard steps
to load the compiler within Larceny.

Sorry about the mistake earlier!

Cheers,
-Felix

p.s. Here is an example usage:

% ./twobit
Larceny v0.97b1 (beta test) (Aug 25 2008 04:23:30, precise:Posix
Unix:unified)
twobit.heap, built on Mon Aug 25 04:25:03 EDT 2008
(readify-lap '((15 100000000) (17 times) (11 unspecified) (37)))
((const 100000000)
(setglbl times)
(op1 unspecified)
(return))
*mnemonic-names*
((70 . save/stores)
(69 . reg/check)
(68 . reg/branchf)
(67 . reg/op3)
(66 . const/setglbl)
(65 . reg/setglbl)
(64 . global/setreg)
(63 . global/invoke)
(62 . setrtn/jump)
(61 . setrtn/branch)
(60 . setrtn/invoke)
(59 . reg/op2imm/setreg)
(58 . reg/op2/setreg)
(57 . reg/op1/setreg)
(56 . reg/op2imm/check)
(55 . reg/op2/check)
(54 . reg/op1/check)
(53 . reg/op2imm/branchf)
(52 . reg/op2/branchf)
(51 . reg/op1/branchf)
(50 . op2imm/branchf)
(49 . op2/branchf)
(48 . op1/branchf)
(47 . const/setreg)
(46 . trap)
(45 . check)
(44 . branchf)
(43 . branch)
(42 . skip)
(41 . jump)
(40 . nop)
(39 . apply)
(38 . mvrtn)
(37 . return)
(36 . popstk)
(35 . pop)
(34 . restore)
(33 . setrtn)
(32 . save)
(31 . invoke)
(30 . args>=)
(29 . args=)
(28 . lexes)
(27 . lambda)
(26 . movereg)
(25 . setreg)
(24 . reg)
(23 . store)
(22 . load)
(21 . setstk)
(20 . stack)
(19 . setlex)
(18 . lexical)
(17 . setglbl)
(16 . global)
(15 . const)
(14 . op2imm)
(13 . op3)
(12 . op2)
(11 . op1)
(10 . \x2e;entry)
(9 . \x2e;singlestep)
(8 . \x2e;end)
(7 . \x2e;proc-doc)
(6 . \x2e;asm)
(5 . \x2e;align)
(4 . \x2e;cont)
(3 . \x2e;proc)
(2 . \x2e;label)
(1 . \x2e;linearize))
Loading...