DE3921628A1 - Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processor - Google Patents
Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processorInfo
- Publication number
- DE3921628A1 DE3921628A1 DE3921628A DE3921628A DE3921628A1 DE 3921628 A1 DE3921628 A1 DE 3921628A1 DE 3921628 A DE3921628 A DE 3921628A DE 3921628 A DE3921628 A DE 3921628A DE 3921628 A1 DE3921628 A1 DE 3921628A1
- Authority
- DE
- Germany
- Prior art keywords
- assembler
- file
- disassembler
- machine
- tabd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318307—Generation of test inputs, e.g. test vectors, patterns or sequences computer-aided, e.g. automatic test program generator [ATPG], program translations, test program debugging
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/319—Tester hardware, i.e. output processing circuits
- G01R31/31903—Tester hardware, i.e. output processing circuits tester configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
Die Erfindung betrifft ein Verfahren zur Erzeugung von Assem blern und/oder Disassemblern für die Beschreibung des Maschi nenbefehlssatzes eines Mikroprozessorbausteins gemäß dem Ober begriff des Patentanspruchs 1.The invention relates to a method for producing assem blers and / or disassemblers for the description of the machine a microprocessor chip instruction set according to the Ober Concept of claim 1.
Zur Funktionsprüfung eines digitalen Bausteins werden Dateien mit Prüfmustern erzeugt, die die Reaktion des Bausteins auf vorgegebene Eingangszustände wiedergeben. Dabei wird der im Prüfmuster angegebene Ausgangswert mit dem tatsächlichen Aus gangswert des Prüflings verglichen.Files are used to test the function of a digital module generated with test patterns that respond to the building block Play given input states. The im Test sample given initial value with the actual off current value of the test object compared.
Bei einem Mikroprozessorbaustein bedeutet dies, daß für jeden Maschinenbefehl zu jedem Takt die Zustände der Eingabepins und der zugehörigen Ausgabepins anzugeben sind. Da das Aufstellen derartiger Prüfmuster sehr aufwendig ist, bedient man sich zur effizienteren Erstellung von Testmustern eines Testautomaten, unter dessen Kontrolle ein Maschinenprogramm in einem als Mu sterbaustein verwendeten Mikroprozessor abläuft. In jedem Takt werden die Ein- und Ausgabepins abgetastet und gespeichert. Das auf diese Art entstandene Prüfmuster dient als Grundlage für das Testen der Mikroprozessoren.In the case of a microprocessor module, this means that for everyone Machine command the states of the input pins and the associated output pins must be specified. Since putting up such a test sample is very complex, one uses more efficient creation of test samples of a test machine, under his control a machine program in a as Mu The microprocessor used expires. Every bar the input and output pins are scanned and saved. The Test samples created in this way serve as the basis for testing the microprocessors.
Für die Beschreibung der Maschinenbefehle des zu testenden Mi kroprozessorbausteins ist der Einsatz eines Assemblers von Vor teil, da eine Codierung von Hand zeitaufwendig und fehlerbehaf tet ist. Liegen Testmuster bereits vor, so kann durch einen Disassembler die Suche nach einem eventuell auftretenden Fehler dadurch unterstützt werden, daß der aus der Prüfmusterdatei ausgelesene Maschinencode in einen symbolischen Befehl mit mne motechnischen Abkürzungen umgewandelt wird.For the description of the machine commands of the Mi to be tested croprocessor building block is the use of an assembler from before part because coding by hand is time-consuming and error-prone is. If test samples are already available, a Disassembler the search for a possible error are supported by the fact that from the test sample file read machine code in a symbolic command with mne technical abbreviations is converted.
Die Umsetzung der symbolischen Befehle in die Maschinencodes und umgekehrt wird durch Verwendung einer Eingabedatei er reicht, in der anhand der Codierung in einer formalen Sprache ein Mikroprozessorbaustein ausreichend beschreibbar ist.The implementation of the symbolic commands in the machine codes and vice versa by using an input file suffices in terms of coding in a formal language a microprocessor module is sufficiently writable.
Da insbesondere bei neu auf dem Markt erschienenen Mikroprozes soren die zugehörigen Assembler und Disassembler erst relativ spät zur Verfügung stehen und außerdem die Notwendigkeit eines darauf zugeschnittenen Entwicklungssystems besteht, ist es Auf gabe der vorliegenden Erfindung, einen Assembler bzw. Disas sembler zur Beschreibung eines beliebigen Mikroprozessorbau steins für Testzwecke zu entwickeln.Because especially with new microprocesses appearing on the market the associated assembler and disassembler are relative be available late and also the need for one development system tailored to it, it is up the present invention, an assembler or disas sembler to describe any microprocessor build to develop stones for test purposes.
Diese Aufgabe wird durch die kennzeichnenden Merkmale des Pa tentanspruchs 1 gelöst.This task is characterized by the characteristic features of Pa claim 1 solved.
Eine vorteilhafte Weiterbildung der Erfindung ist dem Unteran spruch zu entnehmen. Die komplette Angabe sämtlicher mnemotech nischer Ausdrücke kann für komplexe Mikroprozessoren umfang reich sein. Daher werden die Teile unterschiedlicher Befehle immer gleich codiert, die in diesen Befehlen gemeinsam vorkom men. Dazu werden Untertabellen aus den wiederholt anzutreffen den Teilcodierungen gebildet. Somit lassen sich auch Mikropro zessoren mit einem umfangreichen Befehlssatz mit relativ gerin gem Aufwand gut beschreiben.An advantageous development of the invention is the Unteran to take spell. The complete specification of all mnemotech expressions can be extensive for complex microprocessors be rich. Therefore, the parts of different commands always coded identically, which occur together in these commands men. For this purpose, subtables from the can be found repeatedly the partial codings. This means that micropro cessors with an extensive instruction set with relatively little describe well according to effort.
Einzelheiten der Erfindung werden anhand eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert. Im einzel nen zeigen:Details of the invention are based on one in the drawing illustrated embodiment explained in more detail. In detail show:
Fig. 1 ein Ablaufdiagramm zur Erzeugung eines Assemblers bzw. Disassemblers und Fig. 1 is a flowchart for generating an assembler or disassembler and
Fig. 2 die Zuordnung mnemotechnischer Abkürzungen zu den Ma schinencodes in Form von Tabellen. Fig. 2 shows the assignment of mnemonic abbreviations to the machine codes in the form of tables.
Das in Fig. 1 dargestellte Ablaufdiagramm sieht eine Eingabeda tei INDAT vor, in der einer formalen Programmiersprache ent sprechende Sprachmittel zur Beschreibung eines Mikroprozessor bausteins zur Verfügung gestellt werden. Diese Sprachmittel be stehen aus endlichen Folgen von Zahlen, Namen, Binärzeichenket ten oder Sonderzeichen. Durch einen Programmgenerator PG wird mit Hilfe der Eingabedatei INDAT eine Tabellendatei TABD er zeugt, in der in Form von Tabellen die Zuweisung der mnemotech nischen Abkürzungen symbolischer Befehle zu den Maschinencodes des Prozessors erfolgt.The flowchart shown in FIG. 1 provides an input file INDAT in which language means corresponding to a formal programming language are provided for describing a microprocessor module. These language elements consist of finite sequences of numbers, names, binary strings or special characters. A program generator PG uses the input file INDAT to generate a table file TABD in which the mnemonic abbreviations of symbolic commands are assigned to the machine codes of the processor in the form of tables.
Jeder Eintrag einer Tabelle besteht aus einem ersten Feld mit dem symbolischen Namen des Befehls und aus einem zweiten Feld mit dem zugehörigen Binärmuster, wobei die einzelnen Tabellen einträge durch eine bestimmte Anweisung in der Programmgenera torsprache angegeben sind. In der Datei TABD sind somit alle möglichen Befehle mit den vorkommenden Adressierungsarten und ihre zugehörigen Binärwerte enthalten.Each entry in a table consists of a first field with the symbolic name of the command and a second field with the associated binary pattern, with the individual tables entries by a specific instruction in the program genera gate language are specified. All are in the TABD file possible commands with the types of addressing and contain their associated binary values.
Der Programmgenerator PG bedient sich jeweils eines optionalen Deklarationsteils, gefolgt von einem wenigstens eine Tabelle aufweisenden Tabellenteil. Im Deklarationsteil werden verschie dene Parameter für den Assembler bzw. Disassembler festgelegt, so z.B. die Länge der Adressen, die der Assembler im Ausgabeli sting zu erzeugen hat, der zugrundegelegte Zeichensatz oder die lokalen und globalen Variablen. Dem Deklarationsteil folgen die Beschreibungen der verschiedenen Tabellen, die in beliebiger Reihenfolge angegeben sein können. The program generator PG uses an optional one Declaration part, followed by at least one table having part of the table. In the declaration part are different set the parameters for the assembler or disassembler, so e.g. the length of the addresses that the assembler in the output sting has to generate, the underlying character set or the local and global variables. The declaration part is followed by Descriptions of the various tables in any Order can be specified.
Neben der Tabellendatei TABD wird vom Programmgenerator PG auch eine Listingdatei LISD gebildet, in der ein Übersetzungsproto koll der Eingabedatei und Fehlermeldungen gespeichert werden. Entdeckt der Programmgenerator PG einen Fehler in der Eingabe datei INDAT, so wird der Übersetzungslauf abgebrochen und eine Meldung mit Angabe einer die Art des Fehlers kennzeichnenden Fehlernummer ausgegeben.In addition to the TABD table file, the program generator PG also a listing file LISD is formed, in which a translation prototype The input file and error messages can be saved. If the program generator PG detects an error in the input file INDAT, the translation run is canceled and one Message with an indication of the type of error Error number issued.
In einer weiteren Datei QA bzw. QD wird das Quellprogramm des Assemblers bzw. Disassemblers abgelegt, das jeweils mit Hilfe eines entsprechenden Kompilierers COM in ein Objektmodul MOD übersetzt wird. Nach dem Verknüpfen des Objektmoduls MOD mit einer Modulbibliothek BIB über einen Binder B entsteht ein ab lauffähiger Assembler ASS bzw. Disassembler DASS, mit dem die Mnemonics in die Maschinencodes bzw. umgekehrt aus der Tabel lendatei TABD umgesetzt werden. Dies erfolgt auf Textebene, d.h. es wird ein Assembler- bzw. Disassemblerlisting LIST mit den entsprechenden Verschlüsselungen in dem gewählten Zahlensy stem bzw. mit den Mnemonics ausgegeben.In another file QA or QD the source program of the Assemblers or Disassemblers filed, each with the help a corresponding compiler COM into an object module MOD is translated. After linking the MOD object module with of a module library BIB via a Binder B is created executable assembler ASS or disassembler DASS, with which the Mnemonics in the machine codes or vice versa from the table TABD file can be implemented. This is done at the text level, i.e. there will be an assembler or disassembler listing LIST the corresponding encryption in the selected number system stem or issued with the mnemonics.
Das Assemblerlisting enthält die Angabe der Zeilennummer im Quellprogramm, gefolgt von der Symbolnummer, der Adresse in beispielsweise sedezimaler Schreibweise, sowie dem zur Quell zeile gehörigen Maschinencode, ebenfalls in sedezimaler Be schreibung. Das Disassemblerlisting erscheint mit Aufzeichnung der sedezimalen Adresse des nächstfolgenden Befehls, des zum Mnemonic gehörenden Maschinencodes in sedezimaler Darstellung, sowie des Assemblerbefehls in seiner symbolischen Notation.The assembly listing includes the line number in the Source program, followed by the symbol number, the address in for example, hexadecimal notation and the source machine code belonging to the line, also in hexadecimal Be spelling. The disassembly listing appears with recording the hexadecimal address of the next command to be used Machine codes belonging to mnemonic in hexadecimal representation, as well as the assembly instruction in its symbolic notation.
Fig. 2 zeigt an einem Additionsbefehl ADD und einem Subtrakti onsbefehl SUB die Zuweisung der Mnemonics zu den Maschinenco des. Dabei soll der Inhalt eines aus einer Menge von Registern A, B, C, D, E, H und L ausgewählten Registers addiert oder sub traheirt werden. Denkbar wäre die Verwendung nur einer Tabelle, die alle möglichen Befehle und ihre entsprechend zugeordneten Maschinencodes enthielte. Da dies zu einem mühsamen Suchen des gewünschten Eintrags aus einer Vielzahl von Einträgen führen würde, nützt man den vorteilhaften Umstand, daß Teile der Mne monics unterschiedlichen Befehlen gemeinsam sind. Fig. 2 shows on an addition instruction ADD and a Subtrakti onsbefehl SUB allocation of mnemonics to the Maschinenco of. In this case, the content should adds a selected one of a set of registers A, B, C, D, E, H and L register or sub be married. It would be conceivable to use only one table which would contain all possible commands and their correspondingly assigned machine codes. Since this would lead to a tedious search for the desired entry from a large number of entries, one takes advantage of the advantageous fact that parts of the Mne monics are common to different commands.
Daher sind für die Register A...L immer gleiche Teilcodierungen vorgesehen, die in einer Untertabelle REG für Register abgelegt werden. In einer Haupttabelle MAIN ist neben dem mnemotechni schen Befehlsnamen ADD bzw. SUB und dem Binärmuster jeweils ein Tabellenverweis durch Angabe des Untertabellennamens REG ange geben. Die Zuweisung erfolgt dabei immer durch die ASSIGN-An weisung.For this reason, the same partial codes are always used for registers A ... L provided that filed in a sub-table REG for registers will. In a main table MAIN is next to the mnemotechni command names ADD or SUB and the binary pattern Reference to the table by specifying the sub-table name REG give. The assignment is always made by the ASSIGN-An instruction.
Derartige Verweise können beliebig verschachtelt werden, d.h. die referierte Untertabelle darf wiederum Verweise auf andere Untertabellen enthalten.Such references can be nested arbitrarily, i.e. the referenced subtable may in turn refer to others Subtables included.
Claims (2)
- - daß mit Hilfe der Eingabedatei (TABD) von einem Programmgene rator (PG) mehrere Ausgabedateien erzeugt werden, von denen eine Datei (LISD) ein Übersetzungsprotokoll der Eingabedatei und Fehlermeldungen enthält, eine andere Datei (TABD) Tabellen aufweist, in denen jeweils einem symbolischen Befehl (z.B. ADD) ein Maschinencode zugewiesen wird, während in einer weiteren Datei (QA/QD) das Quellprogramm für den Assembler oder Disas sembler abgelegt wird,
- - daß das jeweilige Quellprogramm von einem Kompilierer (COM) in eine Objektmodul (OM) übersetzt wird,
- - daß das Objektmodul (OM) mit einer Modulbibliothek (BIB) zu einem ablauffähigen Assembler bzw. Disassembler (ASS bzw. DASS) verknüpft wird, und
- - daß von dem ablauffähigen Assembler bzw. Disassembler (ASS bzw. DASS) die Maschinencodes bzw. mnemotechnischen Ausdrücke aus der Tabellendatei (TABD) gelesen werden, bevor sie in Form eines Übersetzungsprotokolls (LIST) ausgegeben werden.
- - That with the help of the input file (TABD) from a program generator (PG) several output files are generated, of which one file (LISD) contains a translation log of the input file and error messages, another file (TABD) has tables, each containing a symbolic one A machine code is assigned to the command (e.g. ADD), while the source program for the assembler or disas sembler is stored in another file (QA / QD),
- that the respective source program is translated by a compiler (COM) into an object module (OM),
- - That the object module (OM) with a module library (BIB) is linked to an executable assembler or disassembler (ASS or DASS), and
- - That the executable assembler or disassembler (ASS or DASS) read the machine codes or mnemonic expressions from the table file (TABD) before they are output in the form of a translation log (LIST).
- - daß übereinstimmenden Teilen der in unterschiedlichen Befeh len enthaltenen mnemotechnischen Abkürzungen jeweils gleiche Maschinencodes zugeordnet werden, die in Untertabellen (z.B. REG) hinterlegt werden, und
- - daß in einer Haupttabelle (MAIN) Verweise auf die Untertabel len eingetragen werden.
- - That matching parts of the mnemonic abbreviations contained in different commands are assigned the same machine codes, which are stored in subtables (eg REG), and
- - That references to the subtables len are entered in a main table (MAIN).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE3921628A DE3921628A1 (en) | 1989-06-30 | 1989-06-30 | Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE3921628A DE3921628A1 (en) | 1989-06-30 | 1989-06-30 | Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processor |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3921628A1 true DE3921628A1 (en) | 1991-01-10 |
Family
ID=6384073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3921628A Ceased DE3921628A1 (en) | 1989-06-30 | 1989-06-30 | Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processor |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE3921628A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0525243A1 (en) * | 1991-07-31 | 1993-02-03 | Siemens Aktiengesellschaft | Method for the display of traced information in a communication system |
WO1996030834A1 (en) * | 1995-03-28 | 1996-10-03 | Sun Microsystems, Inc. | System and method for generating pseudo-random instructions for design verification |
CN103106096A (en) * | 2012-11-27 | 2013-05-15 | 武汉大学 | Disassembly method for embedded microprocessor |
US8464235B2 (en) | 1999-11-30 | 2013-06-11 | Stmicroelectronics Ltd. | Adaptive production of assembler |
-
1989
- 1989-06-30 DE DE3921628A patent/DE3921628A1/en not_active Ceased
Non-Patent Citations (1)
Title |
---|
Löbel Guido, Schmid Hans, Müller Peter, Lexikon der Datenverarbeitung, 4. Siemensinterne Auflage, Verlag Moderne Industrie, München, 1978, S. 51-53 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0525243A1 (en) * | 1991-07-31 | 1993-02-03 | Siemens Aktiengesellschaft | Method for the display of traced information in a communication system |
US5450569A (en) * | 1991-07-31 | 1995-09-12 | Siemens Aktiengesellschaft | Method for the visualization of logged information in a communication system |
WO1996030834A1 (en) * | 1995-03-28 | 1996-10-03 | Sun Microsystems, Inc. | System and method for generating pseudo-random instructions for design verification |
US8464235B2 (en) | 1999-11-30 | 2013-06-11 | Stmicroelectronics Ltd. | Adaptive production of assembler |
CN103106096A (en) * | 2012-11-27 | 2013-05-15 | 武汉大学 | Disassembly method for embedded microprocessor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60308505T2 (en) | METHOD AND SYSTEM FOR AUTOMATIC TESTING OF SOFTWARE | |
DE2504627C2 (en) | Autonomous data processing device | |
DE69226106T2 (en) | Database manufacturing process and device | |
DE2228881A1 (en) | Automatic diagnostic examiner | |
DE3812607A1 (en) | METHOD AND CIRCUIT FOR DETERMINING THE RESOURCE CONFIGURATION OF CIRCUITS TAKEN IN A SLOT OF A COMPUTER | |
DE102005042129A1 (en) | Method and apparatus for automatically evaluating the quality of a software source code | |
EP1038221B1 (en) | Method for checking path coverage in software tests | |
DE3921628A1 (en) | Assembler and disassembler process for microprocessors - has modules for conversion of inputs into code for use by processor | |
DE3503456A1 (en) | Device for generating and editing written matter | |
EP1005216A2 (en) | Method and system for the validation of configuration data for telecommunications systems | |
EP0954810A1 (en) | Method for initializing a simulated behavior of a technical installation and simulation system for a technical installation | |
DE69025885T2 (en) | Device and method for generating the sequence of an industrial process | |
DE102004040976A1 (en) | Generating and modifying user interfaces, especially of control and monitoring systems used in automation technology by extraction of data from CAD plans and conversion into XML format | |
EP1505399B1 (en) | Method for Generating Test Data for functional test of data processing circuits | |
DE10056825C2 (en) | Method, device and computer program for generating a random test code | |
DE69322800T2 (en) | Procedure for performance improvement in an automatic test system | |
DE3217024A1 (en) | WORD GENERATOR | |
DE69333420T2 (en) | METHOD AND ARRANGEMENT FOR TESTING SERVICES IN A TELECOMMUNICATIONS SYSTEM | |
DE69507653T2 (en) | Method and device for generating tests for electronic cards | |
DE10055679A1 (en) | Model-based generation of test scenarios by forming classification tree and extracting information from simulation model | |
DE2613703C2 (en) | Circuit arrangement for translating program texts | |
DE4426739C2 (en) | Test procedure and device for generating test cases, test device and program module therefor | |
EP0560342B1 (en) | Method for debugging HDL-programs | |
DE102004039884A1 (en) | Technical system e.g. electronic control unit, testing process for motor vehicle, involves finding simultaneous execution of program blocks of same hierarchical stage, and subsequently executing different hierarchical stage blocks | |
WO1995002863A1 (en) | Process for testing an object-oriented programme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |