Function frequency: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
(Added XPL0 example.) |
||
Line 2,244: | Line 2,244: | ||
3 mergedEdges.add |
3 mergedEdges.add |
||
3 centerPoint.call |
3 centerPoint.call |
||
</pre> |
|||
=={{header|XPL0}}== |
|||
This program lists its top ten intrinsic (code) calls. |
|||
The included xpllib provides many such calls. |
|||
Intrinsics are routines built into the runtime support code. |
|||
<syntaxhighlight lang "XPL0"> |
|||
\codesr.xpl Complete set of intrinsics for XPL0 on the Raspberry Pi |
|||
code \var:=\Abs(int)=0, \var:=\Ran(range)=1, |
|||
\var:=\Rem(expr)=2, \adr:=\Reserve(bytes)=3, |
|||
\var:=\Swap(int)=4, \var:=\Extend(byte)=5, |
|||
Restart=6, \var:=\ChIn(dev)=7, |
|||
ChOut(dev,byte)=8, CrLf(dev)=9, |
|||
\var:=\IntIn(dev)=10, IntOut(dev,int)=11, |
|||
Text(dev,str)=12, OpenI(dev)=13, |
|||
OpenO(dev)=14, Close(dev)=15, |
|||
Abort=16, Trap(bits)=17, |
|||
\var:=\Free=18, \var:=\Rerun=19, |
|||
\adr:=\GetHP=20, SetHP(adr)=21, |
|||
\var:=\GetErr=22, Cursor(X,Y)=23, |
|||
FSet(hand,^I/^O)=24, SetRun(bool)=25, |
|||
\var:=\HexIn(dev)=26, HexOut(dev,int)=27, |
|||
\var:=\FOpen(pathname,0=r/1=w)=29, FClose(hand)=32, |
|||
\var:=\KeyHit=33, \var:=\ChkKey=33, |
|||
Sound(vol,dur,period)=39, Clear=40, |
|||
Point(X,Y,color)=41, Line(X,Y,color)=42, |
|||
Move(X,Y)=43, \var:=\ReadPix(X,Y)=44, |
|||
SetVid(mode)=45, \var:=\Fix(real)=50, |
|||
Attrib(bg:fg)=69, SetWind(X0,Y0,X1,Y1,mode,fill)=70, |
|||
RawText(dev,str)=71, Hilight(X0,Y0,X1,Y1,bg:fg)=72, |
|||
\adr:=\MAlloc(bytes)=73, Release(adr)=74, |
|||
TrapC(bool)=75, \var:=\TestC=76, |
|||
ShowMouse(bool)=77, MoveMouse=78, |
|||
RanSeed(int)=79, \rgb:=\GetPalette(reg)=80, |
|||
Paint(X,Y,W,H,image,W2)=81, \var:=\GetTime=82, |
|||
BackUp=83, SetFB(W,H,D)=84, |
|||
\var:=\OpenMouse=85, \adr:=\GetMouse=86, |
|||
\adr:=\GetMouseMove=87, ShowCursor(bool)=88, |
|||
\var:=\GetKey=89, SetPalette(reg,R,G,B)=90, |
|||
\adr:=\GetFont(set)=91, SetFont(height,adr)=92, |
|||
\var:=\GetShiftKeys=93, DelayUS(int)=94, |
|||
\adr:=\GetDateTime=95, InsertKey(byte)=96, |
|||
\adr:=\GetFB=97, WaitForVSync=98, |
|||
ShowPage(0/1)=99, CopyMem(dst,src,bytes)=100, |
|||
FillMem(adr,byte,bytes)=101, \adr:=\ReallocMem(adr,bytes)=102, |
|||
PlaySoundFile(pathname)=103, SetHexDigits(digits)=104, |
|||
\process:=\Fork(processes)=105, Join(process)=106, |
|||
\adr:=\SharedMem(bytes)=107, Lock(adr)=108, |
|||
Unlock(adr)=109; |
|||
code real |
|||
\adr:=\RlRes(int)=46, \var:=\RlIn(dev)=47, |
|||
RlOut(dev,real)=48, \var:=\Float(int)=49, |
|||
\var:=\RlAbs(real)=51, Format(int,int)=52, |
|||
\var:=\Sqrt(real)=53, \var:=\Ln(real)=54, |
|||
\var:=\Exp(real)=55, \var:=\Sin(real)=56, |
|||
\var:=\ATan2(realY,realX)=57, \var:=\Mod(real,real)=58, |
|||
\var:=\Log(real)=59, \var:=\Cos(real)=60, |
|||
\var:=\Tan(real)=61, \var:=\ASin(real)=62, |
|||
\var:=\ACos(real)=63, \var:=\Floor(real)=64, |
|||
\var:=\Ceil(real)=65, \var:=\Pow(realX,realY)=66; |
|||
include xpllib; |
|||
int Counts(128), I, Ch, Num, Maxx, SI Cnt; |
|||
char Str, Addr; |
|||
[\Read this program's compiled assembly language into a string |
|||
if not OpenInFile("funcfreq.s") then |
|||
[Text(0, "funcfreq.s not found"); exit 1]; |
|||
Str:= 0; I:= 0; |
|||
loop [Str:= ReallocMem(Str, I+1); |
|||
Ch:= ChIn(3); |
|||
if Ch = EOF then quit; |
|||
Str(I):= Ch; |
|||
I:= I+1; |
|||
]; |
|||
Str(I):= 0; |
|||
\Count numbers of times each intrinsic is called |
|||
for I:= 0 to 127 do Counts(I):= 0; |
|||
Addr:= Str; |
|||
loop [Addr:= StrFind(Addr, "intr"); |
|||
if Addr = 0 then quit; |
|||
Addr:= Addr+4; \skip "intr" |
|||
Num:= 0; |
|||
while Addr(0)>=^0 and Addr(0)<=^9 do |
|||
[Num:= Num*10 + Addr(0) - ^0; |
|||
Addr:= Addr+1; |
|||
]; |
|||
if Num < 128 then \for safety |
|||
Counts(Num):= Counts(Num)+1; |
|||
]; |
|||
Print("Top ten intrinsic calls (code: freq):\n"); |
|||
Cnt:= 0; |
|||
loop [Maxx:= 0; |
|||
for I:= 0 to 127 do |
|||
if Counts(I) > Maxx then |
|||
[Maxx:= Counts(I); |
|||
SI:= I; |
|||
]; |
|||
Print("%2d: %2d\n", SI, Counts(SI)); |
|||
Counts(SI):= 0; |
|||
Cnt:= Cnt+1; |
|||
if Cnt >= 10 then quit; |
|||
]; |
|||
]</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Top ten intrinsic calls (code: freq): |
|||
8: 72 |
|||
7: 67 |
|||
41: 14 |
|||
11: 12 |
|||
13: 12 |
|||
12: 11 |
|||
14: 10 |
|||
48: 10 |
|||
42: 9 |
|||
43: 9 |
|||
</pre> |
</pre> |