mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 02:51:37 +01:00 
			
		
		
		
	* more 68000 fixref changes
git-svn-id: trunk@22764 -
This commit is contained in:
		
							parent
							
								
									d8c2930454
								
							
						
					
					
						commit
						0b404fea69
					
				| @ -425,7 +425,8 @@ unit cgcpu; | |||||||
|            displacement. |            displacement. | ||||||
|          } |          } | ||||||
|          { first ensure that base is an address register } |          { first ensure that base is an address register } | ||||||
|          if (ref.base<>NR_NO) and not isaddressregister(ref.base) then |          if (not assigned (ref.symbol) and (current_settings.cputype<>cpu_MC68000)) and | ||||||
|  |             (ref.base<>NR_NO) and not isaddressregister(ref.base) then | ||||||
|            begin |            begin | ||||||
|              hreg:=getaddressregister(list); |              hreg:=getaddressregister(list); | ||||||
|              list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg)); |              list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg)); | ||||||
| @ -466,6 +467,23 @@ unit cgcpu; | |||||||
|                        ref.offset := 0; |                        ref.offset := 0; | ||||||
|                        exit; |                        exit; | ||||||
|                      end; |                      end; | ||||||
|  |                    if assigned(ref.symbol) then | ||||||
|  |                      begin | ||||||
|  |                        hreg:=getaddressregister(list); | ||||||
|  |                        idxreg:=ref.base; | ||||||
|  |                        ref.base:=NR_NO; | ||||||
|  |                        list.concat(taicpu.op_ref_reg(A_LEA,S_L,ref,hreg)); | ||||||
|  |                        reference_reset_base(ref,hreg,0,ref.alignment); | ||||||
|  |                        fixref:=true; | ||||||
|  |                        ref.index:=idxreg; | ||||||
|  |                      end | ||||||
|  |                    else if not isaddressregister(ref.base) then | ||||||
|  |                      begin | ||||||
|  |                        hreg:=getaddressregister(list); | ||||||
|  |                        list.concat(taicpu.op_reg_reg(A_MOVE,S_L,ref.base,hreg)); | ||||||
|  |                        fixref:=true; | ||||||
|  |                        ref.base:=hreg; | ||||||
|  |                      end; | ||||||
|                  end |                  end | ||||||
|                else |                else | ||||||
|                  { Note: symbol -> ref would be supported as long as ref does not |                  { Note: symbol -> ref would be supported as long as ref does not | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 pierre
						pierre