From c92de6287d34d1469113f5a9b513cd2b5f13819f Mon Sep 17 00:00:00 2001 From: stefan Date: Tue, 10 Dec 2002 12:05:51 +0000 Subject: [PATCH] English translation --- alpha/calling.doc | 132 ++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 69 deletions(-) diff --git a/alpha/calling.doc b/alpha/calling.doc index 287217a66..b223fe650 100644 --- a/alpha/calling.doc +++ b/alpha/calling.doc @@ -6,8 +6,8 @@ A short description of Alpha calling conventions and register usage. - Authors: Andreas Krall EMAIL: cacao@complang.tuwien.ac.at - Reinhard Grafl EMAIL: cacao@complang.tuwien.ac.at + Authors: Andreas Krall EMAIL: cacao@complang.tuwien.ac.at + Reinhard Grafl EMAIL: cacao@complang.tuwien.ac.at Last Change: 1998/11/05 @@ -18,22 +18,19 @@ Short documentation of the Java calling conventions for the Alpha. -------------------------------------------------------------------------------- -Die Aufrufskonventionen halten sich weitgehende an die Konventionen -f"ur normale C-Funktionen, allerdings mit einigen zus"atzlichen -Registerbelegungen: +The calling conventions basically follow the conventions for normal C +functions. However, the R28 register has a special meaning: -R28 ..... enth"alt bei einem Methodenaufruf auf jeden Fall den Zeiger - auf die zugeh"orige 'methodinfo'-Struktur, die gegebenenfalls an - den JIT-Compiler weitergegeben werden muss. +R28 ..... contains a pointer to the correct 'methodinfo' structure for this + method, in case it has to be passed on to the JIT compiler. - Wenn von Java-Methoden aus direkt C-Funktionen aufgerufen werden, - (f"ur die nat"urlich auch keine 'methodinfo'-Struktur existiert), - dann hat dieses Register keinen definierten Wert (Alle von der - JavaVM verwendeten Funktionen, z. B. 'builtin_new', etc. werden - so aufgerufen) + If Java methods call C functions directly (C functions don't have + 'methodinfo' structures associated naturally), the value of this + register is undefined. Every function called by the JavaVM + (builtin_new, etc.) is called this way. -Die restlichen Register folgen den normalen Konventionen, aber ich gebe -hier noch einmal eine kurze "Ubersicht: +The other registers are used according to the standard Alpha calling +conventions. Here is a summary of the usage: integer registers: @@ -45,8 +42,8 @@ R1-R8 ..... temporary registers (destroyed by called method) R9-R15 .... saved registers (left unchanged by called method) R16-R21 ... argument registers 0 - 5 (contain the first six method arguments - of type INT, LONG and ADDRESS. Argument registers are destroyed - by called method) + of type INT, LONG and ADDRESS. Argument registers are destroyed + by called method) R22-R24 ... temporary registers (destroyed by called method) @@ -55,14 +52,14 @@ R25 ....... code generator temporary register (destroyed by called method) R26 (ra) .. return address (left unchanged by called method) R27 (pv) .. procedure vector, points to the first instruction of the called - method. This vector is used for addressing the entries in the - data segment. The ov of the caller is recomputed from the ra. - Therefore it is necessary that a return is always done using ra. + method. This vector is used for addressing the entries in the + data segment. The ov of the caller is recomputed from the ra. + Therefore it is necessary that a return is always done using ra. R28 ....... pointer to 'methodinfo' structure. This register has to be set - correctly, because it is needed in the case the jit is invoked. - Also used as code generator temporary register. It isdestroyed - by called method) + correctly, because it is needed in the case the jit is invoked. + Also used as code generator temporary register. It isdestroyed + by called method) R29 ....... code generator temporary register (destroyed by called method) @@ -76,14 +73,14 @@ floating point registers: F0 ........ method result value for types FLOAT and DOUBLE F1 ........ temporary register (destroyed by called method) - + F2-F9 ..... saved registers (left unchanged by called method) F10-F15 ... temporary registers (destroyed by called method) F16-F21 ... argument registers 0 - 5 (contain the first six method arguments - of type FLOAT and DOUBLE. Argument registers are destroyed - by called method) + of type FLOAT and DOUBLE. Argument registers are destroyed + by called method) F22-F27 ... temporary registers (destroyed by called method) F28-F30 ... code generator temporary register (destroyed by called method) @@ -93,61 +90,58 @@ F31 ....... always contains zero -PARAMETER"UBERGABE AM STACK: +PARAMETER PASSING ON THE STACK: -Bei mehr als sechs Parametern reicht der Platz in den Registern nicht mehr -aus, daf"ur werden alle Parameter ab dem Siebenten am Stack "ubergeben, -und zwar nach folgendem Muster: +Only six parameters can be passed in registers, so every argument beginning +from the seventh needs to use the stack, according to the following +conventions: - | ..... | + | ..... | + -------------------------------------------------- + | Parameter 9 ( 64 bit regardless of type) | + -------------------------------------------------- + | Parameter 8 ( 64 bit regardless of type) | + -------------------------------------------------- + R30 (sp) ---> | Parameter 7 ( 64 bit regardless of type) | -------------------------------------------------- - | Parameter 9 ( 64 bit, egal bei welchem Typ) | - -------------------------------------------------- - | Parameter 8 ( 64 bit, egal bei welchem Typ | - -------------------------------------------------- - R30 (sp) ---> | Parameter 7 ( 64 bit, egal bei welchem Typ) | - -------------------------------------------------- -Der Stackpointer zeigt dabei auf die Untergrenze des Parameterbereichs. +The stack pointer points at the bottom of the parameter passing area. -VOLLST"ANDIGES LAYOUT EINES STACKFRAMES: +ENTIRE STACK FRAME LAYOUT: -Jede Methode muss (wenn es keine Leaf-Methode ist, auf jeden Fall) gewisse -Registerinhalte am Stack sichern. -Eventuell werden auch noch lokale Werte, die nicht mehr in Registern -Platz finden, ebenfalls am Stack aufbewahrt, und die Parameter"ubergabe -bei mehr als 6 Parametern ben"otigt ebenfalls Platz am Stack. +Each method (except leaf methods which make no further calls) need to save +some registers on the stack. Possibly a method also needs to use part of the +stack frame as spill area for local values. Parameter passing for more than +six parameters requires stack space as well. -Ein vollst"andiger Stackframe hat also dieses Aussehen (jeder Eintrag -im Stackframe ist unabh"angig vom Typ auf jedem Fall 64 bit lang, die -Gr"ossenangaben der Bereiche sind in solchen Einheiten von 64 Bit -angegeben): +An entire stack frame looks like this (each entry is exactly 64 bits long, +sizes are given in multiples of 64 bit units): - --------------------------------------------- - | parameter n (passed from caller) | - --------------------------------------------- - | parameter n-1 | - --------------------------------------------- - | ... | - --------------------------------------------- - | parameter 7 | + --------------------------------------------- + | parameter n (passed from caller) | + --------------------------------------------- + | parameter n-1 | + --------------------------------------------- + | ... | + --------------------------------------------- + | parameter 7 | old SP ---> ============================================= --- parentargs_base - | saved RA | - --------------------------------------------- savedregs_num - | others saved registers | - ============================================= --- maxmemuse + 1 - | optional monitor_exit argument | - ============================================= --- maxmemuse - | area for spilled registers | - ============================================= - | .... | - --------------------------------------------- - | parameter 8 | - --------------------------------------------- - | parameter 7 (passed to called method) | + | saved RA | + --------------------------------------------- savedregs_num + | others saved registers | + ============================================= --- maxmemuse + 1 + | optional monitor_exit argument | + ============================================= --- maxmemuse + | area for spilled registers | + ============================================= + | .... | + --------------------------------------------- + | parameter 8 | + --------------------------------------------- + | parameter 7 (passed to called method) | new SP ---> ============================================= -- 2.25.1