[BACK]Return to port.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / int-parts

File: [local] / OpenXM / src / asir-doc / int-parts / port.texi (download)

Revision 1.1, Mon Apr 23 05:45:35 2001 UTC (23 years, 2 months ago) by noro
Branch: MAIN
CVS Tags: RELEASE_1_2_1

Risa/Asir manual on the internal specifications.

@comment $OpenXM: OpenXM/src/asir-doc/int-parts/port.texi,v 1.1 2001/04/23 05:45:35 noro Exp $
@chapter $B0\?"(B

@code{risa} $B$OBgItJ,(B C $B$K$h$j=q$+$l$F$$$k$,(B, $BB?G\D91i;;It$N0lIt$O%"%;(B
$B%s%V%i$K$h$j5-=R$5$l$F$$$k(B. $B$^$?(B, $B%a%b%j4IM}It$O(B, $B%;%0%a%s%H$NG[CV$K$h$j(B
$B%Q%i%a%?$ND4@0$,I,MW$G(B, $B7k2L$H$7$F(B OS $B$K0MB8$9$k(B. $B$=$NB>(B, $B:Y$+$$E@$G$$(B
$B$/$D$+5!<o0MB8$9$kItJ,$,$"$k(B. $B$3$3$G$O(B, $B0\?"$N:]$KI,MW$J:n6H$K$D$$$F=R(B
$B$Y$k(B. 

@section $BB?G\D91i;;It(B

$BB?G\D91i;;It$G(B, $B%"%;%s%V%i$rMQ$$$F$$$kItJ,$O(B @samp{asm} $B$H$$$&%G%#%l%/(B
$B%H%j$K$^$H$a$i$l$F$$$k(B. $B%"%;%s%V%i$,I,MW$K$J$kM}M3$O(B, $BB?G\D9?t$NI=8=$G(B, 
1$B7e$rH>8lD9$h$jBg$-$/$H$k$H(B, $B>h=|;;$G(B, $BG\D91i;;$,I,MW$K$J$k$,(B, $BDL>o(B
$B$N(B C $B8@8l$G$OG\D91i;;$r%5%]!<%H$7$F$$$J$$$?$a$G$"$k(B. $BMQ0U$9$Y$-H!?t$O(B
$B<!$N(B 5$B$D$G$"$k(B. 

@example
int dm(a1,a2,pu)           t = a1*a2; *pu = t/BASE; return t%BASE;
int a1,a2,*pu;

int dmb(base,a1,a2,pu)     t = a1*a2; *pu = t/base; return t%base;
int base,a1,a2,*pu;

int dma(a1,a2,a3,pu)       t = a1*a2+a3; *pu =t/BASE; return t%BASE;
int a1,a2,a3,*pu;

int dmab(base,a1,a2,a3,pu) t = a1*a2+a3; *pu = t/base; return t%base;
int base,a1,a2,a3,*pu;

int dmar(a1,a2,a3,d)       t = a1*a2+a3; return t%d;
int a1,a2,a3,d;
@end example

$B$3$l$i$r=q$/$3$H$K$h$j(B, $BB?G\D91i;;It$O40@.$9$k(B. $B8=:_$NHG$G$O(B, 

@table @code
@item 680X0 $BMQ(B 
@code{asm3.s (SUN3$B$*$h$S(BNeXT), asma.s(apollo), asmn.s(NEWS)}
@item sparc $BMQ(B 
@code{asm4.s}
@item VAX $BMQ(B 
@code{asmv.s}
@item MIPS $BMQ(B 
@code{asmm.s}
@end table

$B$,MQ0U$5$l$F$$$k(B. $B%?!<%2%C%H$N(B CPU $B$,$3$l$i$KBP1~$9$k>l9g$K$O(B, $B$3$l$i(B
$B$r$=$N$^$^(B, $B$"$k$$$OB?>/JQ99$7$F;HMQ$9$k$3$H$,$G$-$k(B. 

$B$5$i$K(B, @samp{asm/@{ddM.c,ddN.c@}} $B$G$O(B, $B>e5-H!?t$N%$%s%i%$%sE83+$b;H(B
$BMQ$G$-$k(B. $B8=:_$N=j(B, CPU $B$,(B @code{680X0}, @code{VAX} $B$G$"$k%^%7%s$N$$$/(B
$B$D$+$G<B8=$5$l$F$$$k(B. $B$3$l$O(B, @code{gcc} $B$N(B $B%$%s%i%$%s(B @code{asm} $B$N5!(B
$BG=$rMQ$$$F$$$k$?$a(B, @code{gcc} $B$,;HMQ2DG=$G$"$k$3$H$,I,MW$G$"$k(B. $B$^$?(B, 
@code{mips}, @code{sparc} $B$J$I(B, $B=j0b(B RISC CPU $B$G$O(B $B%$%s%i%$%sE83+$N8z(B
$B2L$,Gv$$$H9M$($i$l$k$?$a9T$J$C$F$$$J$$(B. @code{680X0} $B$r(B CPU $B$K;}$D%^%7(B
$B%s$KBP$7(B $B%$%s%i%$%sE83+$r9T$J$&$h$&$K$9$k>l9g(B, @samp{include/inline.h} 
$B$rJQ99$9$kI,MW$,$"$k(B. @samp{inline.h} $B$G$O(B, @code{680X0} $BMQ$H$7$F(B, 
@code{sun} $B$*$h$S(B @code{motorola} $B$N(B $B%"%;%s%V%iMQ$NFs$D$N%^%/%m$rMQ0U(B
$B$7$F$$$k(B. $B%?!<%2%C%H$N%^%7%s$N%"%;%s%V%i$,$I$A$i$N%"%;%s%V%i$rMQ(B
$B$$$F$$$k$+$K$h$j(B, $B$$$:$l$+$N%^%/%m$rA*Br$9$k$h$&$K(B @code{#if} $B$NItJ,(B
$B$KJQ99(B/$BDI2C$r9T$J$&(B. 

@section $B%a%b%j4IM}(B

GC $B$K$*$$$F$O(B, $B%l%8%9%?(B, $B%9%?%C%/(B, $B@EE*NN0h$+$i$N%^!<%-%s%0$r9T$J$&(B. 
$BFC$K(B, $B%l%8%9%?$O(B, $B5!<o0MB8$J$N$G(B, $B$3$NItJ,$O5!<oKh$K=q$/I,MW$,$"$k(B. 
$B$3$l$O(B, @samp{gc/mach_dep.c} $B$K=8$a$i$l$F$$$k(B. $B$?$@$7(B, @code{mips} $B$K(B
$B$D$$$F$O(B @code{mips} $B$N(B C $B%3%s%Q%$%i$,(B, @code{asm} $BJ8$r5v$7$F$$$J$$$?(B
$B$a(B, @samp{gc/mips_mach_dep.s} $B$H$7$FJ,N%$5$l$F$$$k(B. $B$3$3$KG<$a$i$l$F$$(B
$B$J$$5!<o$KBP$7$F$O(B, $BB>5!<oMQ$NItJ,$r;2>H$7$F=q$/$3$H$K$J$k(B. 
@samp{gc/runtime.h} $B$N@hF,ItJ,$K(B, $B5!<oJL$NDj5A$r9T$J$&ItJ,$,$"(B
$B$k(B. $B$3$3$GDj5A$5$l$?%7%s%\%k$K$h$j(B @samp{mach_dep.c} $B$N5!<oJL$N(B 
$BH!?t$,A*$P$l$k$N$G(B, $BBP1~$,$-$A$s$H<h$l$k$h$&$K$9$k(B. 
@samp{gc/runtime.h} $B$K$O(B, $BB?$/$N%Q%i%a%?$,Dj5A$5$l$F$$$k(B. $B$3$l$i$NFbBg(B
$BItJ,$O(B CPU, OS $B$KL54X78$@$,(B, @code{STACKTOP} $B$H(B @code{DATASTART} $B$N(B 2
$B$D$N%Q%i%a%?$@$1$O5!<oKh$KD4@0$9$kI,MW$,$"$k(B. $B$3$l$i$O<!$N$h$&$J0UL#$r(B
$B;}$D(B. 

@itemize @bullet
@item 
STACKTOP
stack $B$N>e8B(B. $B$3$l$ODL>o(B @code{USRSTACK} $B$J$I$NL>A0$G(B 
@samp{/usr/include/machine/vmparam.h} $B$KDj5A$5$l$F$$$k(B. 

@item
DATASTART
$B@EE*%G!<%?NN0h$N2<8B(B. $B>/$J$/$H$b(B @code{etext} ($B%W%m%0%i%`NN0h$N>e8B(B) $B$h$j>e$G$"(B
$B$k$,(B, $B$3$l$O5!<o$K$h$C$FMM!9$K0[$J$k(B. @code{etext} $B$H@EE*%G!<%?NN0h$N2<8B$,O"(B
$BB3$7$F$$$J$$>l9g(B, @code{DATASTART} $B$r<B:]$N2<8B$h$j2<$K$H$k$H(B $B%"%/%;%90cH?(B
$B$H$J$k>l9g$b$"$k$N$G(B, $B2?$i$+$NJ}K!$G@5$7$$CM$rD4$Y$F@_Dj$9$kI,MW$,$"$k(B. 
@end itemize

$B0J>e$K$h$j(B GC $B$OF0:n$9$k$O$:$G$"$k(B. 

@section alloca()

$BH!?tFb$G:n6HNN0h$H$7$F;HMQ$5$l$k%a%b%j$O%9%?%C%/$+$i<h$k$N$,K>$^$7$$(B. 
$BDL>o$3$l$O(B @code{alloca()} $B$K$h$j<B8=$5$l$k$,(B, $B%^%7%s$K$h$C$F$O(B 
@code{alloca()} $B$r(B @code{malloc()} $B$r;H$C$F<B8=$7$F$$$k$b$N$b$"$k(B. $B$3(B
$B$N$h$&$J>l9g(B, GC $B$N4X78$G%H%i%V%k$N860x$H$J$k$N$G(B @code{alloca()} $B$NBe(B
$B$o$j$K(B @code{gc_malloc()} $B$r;H$&I,MW$,$"$k(B. $B$3$NA*Br$O(B, 
@samp{include/ca.h} $B$G(B @code{ALLOCA()} $B$J$k%^%/%m$rDj5A$9$k$3$H$K$h$j(B
$B9T$J$o$l$k(B. $B$h$C$F(B, $B%?!<%2%C%H%^%7%s$N(B @code{alloca()} $B$,$I$N$h$&$K<B(B
$B8=$5$l$F$$$k$+$rD4$Y(B, $B$=$l$,%9%?%C%/$r;H$C$F$$$k$J$i$P(B 

@example 
#define ALLOCA(d) alloca(d) 
@end example 

@noindent
 malloc() $B$r;H$C$F$$$k$J$i$P(B, 

@example
#define ALLOCA(d) alloca(d) 
@end example

@noindent
$B$H$9$k(B. 

@section $B%$%s%/%j%a%s%?%k%m!<%G%#%s%0(B(ASIR)

@code{ASIR} $B$G$O(B, $B%j%m%1!<%?%V%k(B object  (@code{xxx.o}) $B$r<B9TCf$K(B
$B%m!<%I$G$-$k(B. $B$3$N5!G=$O(B, @code{UNIX} $BHG$G$O(B @code{KCL} (Kyoto Common
Lisp) $B$GMQ$$$i$l$F$$$kJ}K!$r;29M$K$7$F<B8=$5$l$F$$$k(B. 
(@samp{parse/load.c} $B$N(B @code{loadaoutfile()}. ) $B$3$l$O(B, @code{ld}
(link editor) $B$N%$%s%/%j%a%s%?%k%m!<%G%#%s%05!G=$rMQ$$$F$$$k(B. 
@code{ld} $B$,$3$N5!G=$r;}$?$J$$>l9g$O2?$i$+$N<jCJ$,I,MW$H$J$k(B. 
@code{KCL} $B$G$O(B, $B%j%s%/%(%G%#%?$rJL$KMQ0U$9$k$3$H$GBP1~$7$F$$$k(B. 
@code{ld} $B$,$3$N5!G=$r;}$D>l9g$K$b(B,  object $B%U%!%$%k$N%X%C%@$N7A(B
$B<0$N0c$$$K$h$jJQ99$,I,MW$K$J$k>l9g$b$"$k(B. $B4pK\E*$K$O<!$N0lO"$NA`:n$r9T(B
$B$J$&H!?t$r=q$1$P$h$$(B. 

@enumerate
@item
$B%m!<%I$9$Y$-%U%!%$%k$r(B @code{ld} $B$K$h$j%$%s%/%j%a%s%?%k%m!<%I$9$k(B. $B$3(B
$B$l$O(B, $B%j%s%/8e$N(B object $B$N%5%$%:$rD4$Y$k$?$a$N%m!<%I$G$"$k(B. 
@item
1. $B$G$G$-$?(B object $BMQ$NNN0h$r3NJ]$9$k(B. $B$3$NNN0h$N@hF,%]%$%s%?$O(B, 
GC $B$G2s<}$5$l$k$N$rKI$0$?$a(B, $B%R!<%WNN0h$+$i;O$^$k%j%9%H$K7R$0(B. 
@item
2. $B$GF@$?%]%$%s%?$r%W%m%0%i%`NN0h$N@hF,%"%I%l%9$H$7$F(B, $B2~$a$F%m!<%I$9(B
$B$k(B. 
@item
3. $B$G$G$-$?(B object $B$r(B 2. $B$G3NJ]$7$?NN0h>e$KFI$_9~$`(B. 
@item
$B%m!<%I2DG=$J(B object $B$N@hF,$O(B, $B$=$N%U%!%$%k$K4^$^$l$kH!?t$r(B 
@code{ASIR} $B$KEPO?$9$k$?$a$NH!?t$H$J$C$F$$$k$N$G(B, $B$=$l$r8F$S=P$9(B. 
@end enumerate

@code{mips} $B$r(B CPU $B$H$9$k%^%7%s$G$O(B, $B%m!<%I$5$l$k(B object $B$r%3%s%Q(B
$B%$%k$9$k:]$K$d$dFC<l$JCm0U$rMW$9$k>l9g$,$"$k(B. $B$3$3$G$O(B 
@code{DECStation} $B$rNc$K$H$j@bL@$9$k(B. @code{mips} $B$G$O(B, $BH!?t8F$S=P$7$O(B

@example
jal	function
@end example

@noindent
$B$H%3%s%Q%$%k$5$l$k(B. $B$7$+$7(B, @code{jal} $B$O(B, $B8=:_$N%W%m%0%i%`%+%&%s%?$N(B
$B>e(B 4bit $B$rHt$S@h%"%I%l%9$N>e(B 4bit $B$H$7$F;H$&$?$a(B, @code{function} $B$N(B 
$B%"%I%l%9$N>e(B 4bit $B$,8=:_$N%W%m%0%i%`%+%&%s%?$N>e(B 4bit $B$H0lCW$7$J$$$H8F(B
$B$S=P$7$G$-$J$$(B. $B>e5-$N$h$&$JJ}K!$G%$%s%/%j%a%s%?%k%m!<%I$7$?>l9g(B, $B%*%V(B
$B%8%'%/%H$O%R!<%W$KCV$+$l$k$3$H$K$J$k$,(B, @code{DECStation} $B$N>l9g(B, $B85$N(B
$B%W%m%0%i%`NN0h$H(B, $B%R!<%W$G$O(B, $B>e(B 4bit $B$,0[$J$k(B. $B$h$C$F(B, $BIaDL$K%3%s%Q%$(B
$B%k$7$?(B object $B$O%m!<%I$G$-$J$$(B. $B%3%s%Q%$%i$*$h$S%"%;%s%V%i$G$3$l$r(B
$B2r>C$9$kJ}K!$,:#$N=j8+Ev$?$i$J$$$N$G(B, $B<!$N$h$&$JJ}K!$r$H$k$3$H$K$7$?(B. 
$B$9$J$o$A(B, @code{cc -S} $B$G%"%;%s%V%i$N%=!<%9$r=P$7(B, 

@example
jal	function
@end example
@noindent
$B$r(B
@example
.set    noat
la      $at,function
jal     $at
.set    at
@end example

@noindent
$B$K=q$-49$($F(B, $B%"%;%s%V%k$9$k$3$H$H$7$?(B. ($B<B:]$K$O(B, @code{cc}, 
@code{as} $B6&$K(B @samp{-G 0} $B$J$k%*%W%7%g%s$,I,MW$G$"$k(B. $B$^$?(B, @code{as} 
$B$N(B $B7Y9p%a%C%;!<%8$r>C$9$?$a$K$O(B, @samp{-w} $B$J$k%*%W%7%g%s$rIU$1$k(B. ) 
$B$3$N=q$-49$($O(B, $B<!$N(B @code{awk} $B%9%/%j%W%H$K$h$j9T$J$o$l$k(B. 

@example
{ 
    if ( $1 == "jal" && substr($2,0,1) != "$" ) 
        printf "\t.set\tnoat\n\tla\t$at,%s\n\tjal\t$at\n\t.set\tat\n",$2 
    else print
}
@end example

@noindent

$B$3$N=$@5$O(B, @code{mips} $B$r(B CPU $B$H$9$kB>$N%^%7%s(B (@code{RISC NEWS} $B$J$I(B) 
$B$KBP$7$F$bI,MW$G$"$k$H;W$o$l$k(B. 

@section NeXT $B$X$N0\?"(B

$B$3$l$^$G(B @code{UNIX} $B>e$G$N0\?":n6H$K$D$$$F=R$Y$F$-$?$,(B, @code{NeXT} 
$B$O(B @code{Mach} $B$r(B OS $B$H$9$k%^%7%s$G$"$j(B, GC, $B%$%s%/%j%a%s%?%k%m!<%G%#(B
$B%s%0$J$I$h$j(B OS $B$K0MB8$9$kItJ,$G$ODL>o$N(B @code{UNIX} $B$H0[$J$kItJ,$,=P(B
$B$F$/$k(B. $B$=$l$i$K$D$$$F=R$Y$k(B. 

@subsection $B%a%b%j4IM}(B

@code{UNIX} $B$H(B @code{Mach} $B$G$O(B, OS $BB&$N(B $B%a%b%j4IM}$,Bg$-$/0[$J$C$F$$(B
$B$k(B. @code{UNIX} $B$K$*$$$F$O(B, $B%G!<%?%;%0%a%s%H$OO"B3NN0h$G$"$j(B, OS $B$KBP(B
$B$9$k(B $B%a%b%j$NMW5a$O(B, $B$=$NNN0h$r?-$P$9$3$H$K$h$jK~$?$5$l$k(B. $B$7$+$7(B, 
@code{Mach} $B$K$*$$$F$O(B, @code{vm_allocate()} $B$J$kH!?t$K$h$j8DJL$NNN0h(B
$B$H$7$FM?$($i$l(B, $B0lHL$K$=$l$iA4BN$OO"B3$7$?NN0h$H$O$J$i$J$$(B. $B%*%j%8%J%k(B
$B$N(B GC $B$G$O(B, $B%G!<%?%;%0%a%s%H$N(B $B@hF,(B, $BKvHx$@$1$rCN$C$F(B, $B$=$N4V$rA4$F(B 
$B8!::$9$k$,(B, @code{Mach} $B$N>l9g(B, $B$3$N$^$^$G$O%"%/%;%90cH?$r5/$3$92DG=@-(B
$B$,$"$k(B. $B$3$l$i$r9MN8$7$F(B, @code{NeXT} $BHG$G$O<!$N$h$&$JJQ99$r9T$J$C$?(B. 

@enumerate
@item
$B%*%j%8%J%k$G(B @code{brk()}, @code{sbrk()} $B$G=q$+$l$F$$$kItJ,$r(B 
@code{vm_allocate()} $B$r;H$C$F=q$-D>$7$?(B. 
@item
$B8zN(Dc2<$r>7$/62$l$O$"$k$,(B, @code{vm_allocate()} $B$GF@$?NN0h$N>e2<8B$N(B
$B%j%9%H$rJ];}$7(B, $B$"$k?t$,BEEv$J%]%$%s%?$G$"$k$+H]$+$N%A%'%C%/$N:]$K(B, $B$3(B
$B$N%j%9%H$K$h$k%A%'%C%/$b9T$J$&$h$&$K$7$?(B. 
@end enumerate

@noindent
$B$3$l$i$NJQ99$O(B, $B$=$NB>$N(B @code{Mach} $B%^%7%s$K$bDLMQ$9$k$H;W$o$l$k(B.