123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- {
- $Id$
- Copyright (c) 1998-2000 by Florian Klaempfl
- This unit implements an asm for the DEC Alpha
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- ****************************************************************************
- }
- unit agaxpgas;
- {$i fpcdefs.inc}
- interface
- uses
- globals,systems,aasmbase,aasmtai,
- aggas,cpubase;
- type
- TAXPGNUAssembler=class(TGNUAssembler)
- procedure WriteInstruction(hp : tai);override;
- end;
- const
- gas_reg2str : array[tregister] of string[4] = (
- '',
- '','','','','','','','','','',
- '','','','','','','','','','',
- '','','','','','','','','','',
- '','',
- '','','','','','','','','','',
- '','','','','','','','','','',
- '','','','','','','','','','',
- '',''
- );
- implementation
- const
- op2str : array[tasmop] of string[14] = (
- 'addf','addg','addl','addq',
- 'adds','addt','amask','and','beq','bge',
- 'bgt','bic','bis','blbc','blbs','ble',
- 'blt','bne','br','bsr','call_pal','cmoveq',
- 'cmovge','cmovgt','cmovlbc','cmovlbs','cmovle','cmovlt',
- 'cmovne','cmpbge','cmpeq','cmpgeq','cmpgle','cmpglt',
- 'cmple','cmplt','cmpteq','cmptle','cmptlt','cmptun',
- 'cmpule','cmpult','cpys','cpyse','cpysn','ctlz',
- 'ctpop','cttz','cvtdg','cvtgd','cvtgf','cvtgq',
- 'cvtlq','cvtqf','cvtqg','cvtql','cvtqs','cvtqt',
- 'cvtst','cvttq','cvtts','divf','divg','divs',
- 'divt','ecb','eqv','excb','extbl','extlh',
- 'extll','extqh','extql','extwh','extwl','fbeq',
- 'fbge','fbgt','fble','fblt','fbne','fcmoveq',
- 'fcmovge','fcmovgt','fcmovle','fcmovlt','fcmovne','fetch',
- 'fetch_m','ftois','ftoit','implver','insbl','inslh',
- 'insll','insqh','insql','inswh','inswl','itoff',
- 'itofs','itoft','jmp','jsr','jsr_coroutine','lda',
- 'ldah','ldbu','ldwu','ldf','ldg','ldl',
- 'ldl_l','ldq','ldq_l','ldq_u','lds','ldt',
- 'maxsb8','maxsw4','maxub8','maxuw4','mb','mf_fpcr',
- 'minsb8','minsw4','minub8','minuw4','mskbl','msklh',
- 'mskll','mskqh','mskql','mskwh','mskwl','mt_fpcr',
- 'mulf','mulg','mull','mulq',
- 'muls','mult','ornot','perr','pklb','pkwb',
- 'rc','ret','rpcc','rs','s4addl','s4addq',
- 's4subl','s4subq','s8addl','s8addq','s8subl','s8subq',
- 'sextb','sextw','sll','sqrtf','sqrtg','sqrts',
- 'sqrtt','sra','srl','stb','stf','stg',
- 'sts','stl','stl_c','stq','stq_c','stq_u',
- 'stt','stw','subf','subg','subl',
- 'subq','subs','subt','trapb','umulh','unpkbl',
- 'unpkbw','wh64','wmb','xor','zap','zapnot',
- 'ldgp');
- procedure TAXPGNUAssembler.WriteInstruction (hp : tai);
- begin
- (*
- op:=paicpu(hp)^.opcode;
- calljmp:=is_calljmp(op);
- { call maybe not translated to calll }
- s:=#9+att_op2str[op]+cond2str[paicpu(hp)^.condition];
- if (not calljmp) and
- (not att_nosuffix[op]) and
- not(
- (paicpu(hp)^.oper[0].typ=top_reg) and
- (paicpu(hp)^.oper[0].reg in [R_ST..R_ST7])
- ) then
- s:=s+att_opsize2str[paicpu(hp)^.opsize];
- { process operands }
- if paicpu(hp)^.ops<>0 then
- begin
- { call and jmp need an extra handling }
- { this code is only called if jmp isn't a labeled instruction }
- if calljmp then
- s:=s+#9+getopstr_jmp(paicpu(hp)^.oper[0])
- else
- begin
- for i:=0to paicpu(hp)^.ops-1 do
- begin
- if i=0 then
- sep:=#9
- else
- sep:=',';
- s:=s+sep+getopstr(paicpu(hp)^.oper[i])
- end;
- end;
- end;
- AsmWriteLn(s);
- *)
- end;
- end.
- {
- $Log$
- Revision 1.1 2002-09-29 23:42:45 florian
- * several fixes to get forward with alpha compilation
- Revision 1.2 2002/09/07 15:25:10 peter
- * old logs removed and tabs fixed
- Revision 1.1 2002/08/18 09:06:54 florian
- * alpha files moved compiler/alpha
- }
|