From e1c306879abfd83d0e5b6c50e64ab61163311f50 Mon Sep 17 00:00:00 2001 From: mazen Date: Wed, 7 May 2003 11:45:02 +0000 Subject: [PATCH] - removed unused code --- compiler/sparc/aasmcpu.pas | 312 +------------------------------------ 1 file changed, 5 insertions(+), 307 deletions(-) diff --git a/compiler/sparc/aasmcpu.pas b/compiler/sparc/aasmcpu.pas index 59f78a4173..4611ce6a36 100644 --- a/compiler/sparc/aasmcpu.pas +++ b/compiler/sparc/aasmcpu.pas @@ -1,4 +1,4 @@ -{****************************************************************************** +{***************************************************************************** $Id$ Copyright (c) 1998-2000 by Florian Klaempfl and Peter Vreman @@ -72,13 +72,6 @@ type procedure SetCondition(const c:TAsmCond); private { next fields are filled in pass1, so pass2 is faster } - insentry : PInsEntry; - insoffset, - inssize : longint; - LastInsOffset : longint; { need to be public to be reset } - function InsEnd:longint; - function calcsize(p:PInsEntry):longint; - function NeedAddrPrefix(opidx:byte):boolean; procedure Swatoperands; end; PROCEDURE DoneAsm; @@ -312,18 +305,6 @@ procedure taicpu.Swatoperands; {***************************************************************************** Assembler *****************************************************************************} -type - ea=packed record -sib_present:boolean; -bytes:byte; -size:byte; -modrm:byte; -sib:byte; - end; -function taicpu.InsEnd:longint; -begin - InsEnd:=InsOffset+InsSize; -end; procedure TAiCpu.SetCondition(const c:TAsmCond); const AsmCond2OpCode:array[TAsmCond]of TAsmOp= @@ -341,292 +322,6 @@ A_BCS,A_BPOS,A_NEG,A_BVC,A_BVS,A_BA,A_BNE,A_NONE,A_NONE,A_NONE,A_NONE,A_NONE,A_N {$ENDIF EXTDEBUG} end; end; -function taicpu.NeedAddrPrefix(opidx:byte):boolean; -var - i,b:tregister; -begin -{ if (OT_MEMORY and (not oper[opidx].ot))=0 then - begin - i:=oper[opidx].ref^.index; - b:=oper[opidx].ref^.base; - if not(i in [R_NONE,R_EAX,R_EBX,R_ECX,R_EDX,R_EBP,R_ESP,R_ESI,R_EDI]) or - not(b in [R_NONE,R_EAX,R_EBX,R_ECX,R_EDX,R_EBP,R_ESP,R_ESI,R_EDI]) then - begin - NeedAddrPrefix:=true; - exit; - end; - end;} - NeedAddrPrefix:=false; -end; - - -function regval(r:tregister):byte; -begin - {case r of -R_EAX,R_AX,R_AL,R_ES,R_CR0,R_DR0,R_ST,R_ST0,R_MM0,R_XMM0: - regval:=0; -R_ECX,R_CX,R_CL,R_CS,R_DR1,R_ST1,R_MM1,R_XMM1: - regval:=1; -R_EDX,R_DX,R_DL,R_SS,R_CR2,R_DR2,R_ST2,R_MM2,R_XMM2: - regval:=2; -R_EBX,R_BX,R_BL,R_DS,R_CR3,R_DR3,R_TR3,R_ST3,R_MM3,R_XMM3: - regval:=3; -R_ESP,R_SP,R_AH,R_FS,R_CR4,R_TR4,R_ST4,R_MM4,R_XMM4: - regval:=4; -R_EBP,R_BP,R_CH,R_GS,R_TR5,R_ST5,R_MM5,R_XMM5: - regval:=5; -R_ESI,R_SI,R_DH,R_DR6,R_TR6,R_ST6,R_MM6,R_XMM6: - regval:=6; -R_EDI,R_DI,R_BH,R_DR7,R_TR7,R_ST7,R_MM7,R_XMM7: - regval:=7; -else} - begin - internalerror(777001); - regval:=0; - end; -{ end;} -end; - - -function process_ea(const input:toper;var output:ea;rfield:longint):boolean; -{const - regs:array[0..63] of tregister=( -R_MM0, R_EAX, R_AX, R_AL, R_XMM0, R_NONE, R_NONE, R_NONE, -R_MM1, R_ECX, R_CX, R_CL, R_XMM1, R_NONE, R_NONE, R_NONE, -R_MM2, R_EDX, R_DX, R_DL, R_XMM2, R_NONE, R_NONE, R_NONE, -R_MM3, R_EBX, R_BX, R_BL, R_XMM3, R_NONE, R_NONE, R_NONE, -R_MM4, R_ESP, R_SP, R_AH, R_XMM4, R_NONE, R_NONE, R_NONE, -R_MM5, R_EBP, R_BP, R_CH, R_XMM5, R_NONE, R_NONE, R_NONE, -R_MM6, R_ESI, R_SI, R_DH, R_XMM6, R_NONE, R_NONE, R_NONE, -R_MM7, R_EDI, R_DI, R_BH, R_XMM7, R_NONE, R_NONE, R_NONE - );} -var - j:longint; - i,b:tregister; - sym:tasmsymbol; - md,s:byte; - base,index,scalefactor, - o:longint; -begin - process_ea:=false; -{ register ? } -{ if (input.typ=top_reg) then - begin - j:=0; - while (j<=high(regs)) do - begin - if input.reg=regs[j] then - break; - inc(j); - end; - if j<=high(regs) then - begin - output.sib_present:=false; - output.bytes:=0; - output.modrm:=$c0 or (rfield shl 3) or (j shr 3); - output.size:=1; - process_ea:=true; - end; - exit; - end;} -{ memory reference } - i:=input.ref^.index; - b:=input.ref^.base; - s:=input.ref^.scalefactor; - o:=input.ref^.offset+input.ref^.offsetfixup; - sym:=input.ref^.symbol; -{ it's direct address } - if (b.enum=R_NONE) and (i.enum=R_NONE) then - begin - { it's a pure offset } - output.sib_present:=false; - output.bytes:=4; - output.modrm:=5 or (rfield shl 3); - end - else - { it's an indirection } - begin - { 16 bit address? } -{ if not((i in [R_NONE,R_EAX,R_EBX,R_ECX,R_EDX,R_EBP,R_ESP,R_ESI,R_EDI]) and - (b in [R_NONE,R_EAX,R_EBX,R_ECX,R_EDX,R_EBP,R_ESP,R_ESI,R_EDI])) then - Message(asmw_e_16bit_not_supported);} -{$ifdef OPTEA} - { make single reg base } - if (b=R_NONE) and (s=1) then - begin - b:=i; - i:=R_NONE; - end; - { convert [3,5,9]*EAX to EAX+[2,4,8]*EAX } -{ if (b=R_NONE) and - (((s=2) and (i<>R_ESP)) or - (s=3) or (s=5) or (s=9)) then - begin - b:=i; - dec(s); - end;} - { swap ESP into base if scalefactor is 1 } -{ if (s=1) and (i=R_ESP) then - begin - i:=b; - b:=R_ESP; - end;} -{$endif} - { wrong, for various reasons } -{ if (i=R_ESP) or ((s<>1) and (s<>2) and (s<>4) and (s<>8) and (i<>R_NONE)) then - exit;} - { base } -{ case b of - R_EAX:base:=0; - R_ECX:base:=1; - R_EDX:base:=2; - R_EBX:base:=3; - R_ESP:base:=4; - R_NONE, - R_EBP:base:=5; - R_ESI:base:=6; - R_EDI:base:=7; - else - exit; - end;} - { index } -{ case i of - R_EAX:index:=0; - R_ECX:index:=1; - R_EDX:index:=2; - R_EBX:index:=3; - R_NONE:index:=4; - R_EBP:index:=5; - R_ESI:index:=6; - R_EDI:index:=7; - else - exit; - end; - case s of - 0, - 1:scalefactor:=0; - 2:scalefactor:=1; - 4:scalefactor:=2; - 8:scalefactor:=3; - else - exit; - end; - if (b=R_NONE) or - ((b<>R_EBP) and (o=0) and (sym=nil)) then - md:=0 - else - if ((o>=-128) and (o<=127) and (sym=nil)) then - md:=1 - else - md:=2; - if (b=R_NONE) or (md=2) then - output.bytes:=4 - else - output.bytes:=md;} - { SIB needed ? } -{ if (i=R_NONE) and (b<>R_ESP) then - begin - output.sib_present:=false; - output.modrm:=(md shl 6) or (rfield shl 3) or base; - end - else - begin - output.sib_present:=true; - output.modrm:=(md shl 6) or (rfield shl 3) or 4; - output.sib:=(scalefactor shl 6) or (index shl 3) or base; - end;} - end; - if output.sib_present then - output.size:=2+output.bytes - else - output.size:=1+output.bytes; - process_ea:=true; -end; - - -function taicpu.calcsize(p:PInsEntry):longint; -var - codes:pchar; - c:byte; - len:longint; - ea_data:ea; -begin - len:=0; - codes:=@p^.code; - repeat -c:=ord(codes^); -inc(codes); -case c of - 0: - break; - 1,2,3: - begin - inc(codes,c); - inc(len,c); - end; - 8,9,10: - begin - inc(codes); - inc(len); - end; - 4,5,6,7: - begin - if opsize=S_W then - inc(len,2) - else - inc(len); - end; - 15, - 12,13,14, - 16,17,18, - 20,21,22, - 40,41,42: - inc(len); - 24,25,26, - 31, - 48,49,50: - inc(len,2); - 28,29,30, { we don't have 16 bit immediates code } - 32,33,34, - 52,53,54, - 56,57,58: - inc(len,4); - 192,193,194: - if NeedAddrPrefix(c-192) then - inc(len); - 208: - inc(len); - 200, - 201, - 202, - 209, - 210, - 217,218,219:; - 216: - begin - inc(codes); - inc(len); - end; - 224,225,226: - begin - InternalError(777002); - end; - else - begin - if (c>=64) and (c<=191) then - begin - if not process_ea(oper[(c shr 3) and 7], ea_data, 0) then - Message(asmw_e_invalid_effective_address) - else - inc(len,ea_data.size); - end - else - InternalError(777003); - end; -end; - until false; - calcsize:=len; -end; procedure taicpu.loadcaddr(opidx:longint;aReg:TRegister;cnst:Integer); begin if opidx>=ops @@ -660,7 +355,10 @@ procedure InitAsm; end. { $Log$ - Revision 1.24 2003-05-07 11:28:26 mazen + Revision 1.25 2003-05-07 11:45:02 mazen + - removed unused code + + Revision 1.24 2003/05/07 11:28:26 mazen - method CheckNonCommutativeOpcode removed as not used Revision 1.23 2003/05/06 20:27:43 mazen