23Fermer25
deleted2Le 16/03/2010 à 09:13
Optimisation : remplacer tous les addq.l #imm,an par des addq.w. -4 cycles à chaque fois. Je ne fournis pas de patch, je te laisser cette joie. grin
Perso je suis en train d'updater mes sources, j'avais jamais percuté avant triso
Boulot à faire %)
Bcd.asm:	addq.l	#2,a0			; Skip Exponent
Bcd.asm:\Next		addq.l	#1,a0
Bcd.asm:	addq.l	#1,a0
Bcd.asm:	addq.l	#6,a7
Bcd.asm:	addq.l	#4,a7
Builtin.asm:		addq.l	#8,a7		; Pop args
Builtin.asm:		addq.l	#8,a7
Builtin.asm:		addq.l	#4,a2
Builtin.asm:		addq.l	#8,a7
Builtin.asm:			addq.l	#8,a7
Builtin.asm:		addq.l	#4,a7
Builtin.asm:\Ret	addq.l	#6,a7				; Pop the stack
Builtin.asm:	addq.l	#8,a7
Builtin.asm:		addq.l	#8,a7
Builtin.asm:	addq.l	#8,a7
Builtin.asm:\Ok2:	addq.l	#6,a7
Builtin.asm:		addq.l	#8,a7
Builtin.asm:		addq.l	#4,a7
Builtin.asm:		addq.l	#4,a7
Builtin.asm:	addq.l	#6,a7
Builtin.asm:		addq.l	#6,a7
Builtin.asm:		addq.l	#4,a7
Builtin.asm:	addq.l	#6,a7
Builtin.asm:		addq.l	#6,a7
Builtin.asm:			addq.l	#3,a0
Builtin.asm:				addq.l	#8,a7
Builtin.asm:				addq.l	#2,a0
Builtin.asm:		addq.l	#8,a3
Builtin.asm:		addq.l	#8,a3
Cert.asm:		addq.l	#8,a7
Cert.asm:	addq.l	#4,a7
Cert.asm:	addq.l	#4,a7
Cert.asm:	addq.l	#4,a7
Cert.asm:	addq.l	#4,a7
Cert.asm:		addq.l	#1,a4
Cert.asm:	addq.l	#6,a7
Cert.asm:		addq.l	#8,a7
Cert.asm:		addq.l	#6,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:		addq.l	#6,a7
Dialog.asm:\Nothing	addq.l	#6,a7				; Pop the stack
Dialog.asm:	addq.l	#4,a7
Dialog.asm:		addq.l	#8,a7
Dialog.asm:\Ret	addq.l	#8,a7				; It returns 0 if continue
Dialog.asm:		addq.l	#8,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:			addq.l	#4,a7
Dialog.asm:	addq.l	#8,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:				addq.l	#4,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:			addq.l	#2,a7
Dialog.asm:				addq.l	#8,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:\Done	addq.l	#2,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:			addq.l	#6,a7
Dialog.asm:	addq.l	#2,a7
Dialog.asm:	addq.l	#2,a7
Dialog.asm:	;addq.l	#2,a7
Dialog.asm:\ret		addq.l	#4,a7
Dialog.asm:		addq.l	#4,a7
Dialog.asm:		addq.l	#8,a7
Dialog.asm:		addq.l	#2,a7
Dialog.asm:		addq.l	#2,a7
Dialog.asm:		addq.l	#8,a7		
Dialog.asm:	addq.l	#8,a7
Dialog.asm:	addq.l	#4,a7
Dialog.asm:	addq.l	#6,a7
Dialog.asm:	addq.l	#4,a7
Estack2.asm:		addq.l	#1,a2			; One char
Estack2.asm:			addq.l	#2,a7
Estack2.asm:			addq.l	#4,a7			; Pop old ESI
Estack2.asm:		addq.l	#8,a7
Estack2.asm:\Function	addq.l	#1,a2			; Skip '('
Estack2.asm:		addq.l	#1,a2			; Advance String Ptr
Estack2.asm:	addq.l	#6,a7
Estack2.asm:	addq.l	#4,a7
Estack2.asm:		addq.l	#4,a7
Estack2.asm:		addq.l	#4,a7
Estack2.asm:	addq.l	#2,a7
Estack2.asm:	addq.l	#2,a7
Estack2.asm:		addq.l	#1,a5
Estack2.asm:			addq.l	#8,a7
Estack2.asm:			addq.l	#4,a2
Estack2.asm:			addq.l	#4,a7
Estack2.asm:		addq.l	#1,a1
Estack2.asm:	addq.l	#4,a7
Estack2.asm:		addq.l	#4,a7
Estack2.asm:		addq.l	#4,a7
Estack.asm:	addq.l	#4,a7
Estack.asm:	addq.l	#2,a7
Estack.asm:	addq.l	#1,a0
Estack.asm:	addq.l	#2,a0
Estack.asm:	addq.l	#1,a1
Estack.asm:	addq.l	#1,a0
Estack.asm:	addq.l	#8,a7
Estack.asm:	addq.l	#8,a7
Estack.asm:	addq.l	#8,a7
Estack.asm:\EndTag		addq.l	#1,a0		; Do not skip these tags!
Estack.asm:	addq.l	#2,a7
Estack.asm:	addq.l	#1,a0			; Skip LAST tag
Estack.asm:	addq.l	#8,a7
Estack.asm:	addq.l	#4,a7
Estack.asm:	addq.l	#1,a0		; Skip Current TAG
Estack.asm:	addq.l	#4,a7
Extra.asm:		addq.l	#6,a7
Flash.asm:\NoDelete	addq.l	#2,a7			; Skip Src
Flash.asm:		addq.l	#2,a7			; EM_abandon return a non NULL value if success
Flash.asm:\Error:	addq.l	#4,a7	
Flash.asm:\End	addq.l	#6,a7
Graph.asm:	addq.l	#1,a0
Graph.asm:	addq.l	#1,a1
Graph.asm:	addq.l #1,a1
Graph.asm:	addq.l #1,a1
Graph.asm:		addq.l	#2,a7
Graph.asm:		addq.l	#4,a7	; pop return1
Graph.asm:	addq.l	#2,a7
Graph.asm:	addq.l	#2,a7
Graph.asm:	addq.l	#2,a7
Graph.asm:	addq.l	#2,a7
Graph.asm:	addq.l	#2,a7
Graph.asm:	addq.l	#4,a3			; 3rd point
Graph.asm:	addq.l	#2,a7
Heap.asm:\Ok	addq.l	#4,a7			; Pop the saved size
Heap.asm:\error	addq.l	#2,a7
Heap.asm:	addq.l	#4,a7
Heap.asm:	addq.l	#4,a7
Ints.asm:		addq.l	#2,a7
Ints.asm:		addq.l	#4,a0
Ints.asm:		addq.l	#2,a0
Ints.asm:		addq.l	#1,a0
Kernel.asm:	addq.l	#2,a0		; Skip the PPG file size
Kernel.asm:		addq.l	#2,a0		; Src is here
Kernel.asm:		addq.l	#8,a7
Library.asm:	addq.l	#8,a7
Link.asm:		addq.l	#6,a7
Link.asm:	addq.l	#2,a7		; Pop LIO timer
Link.asm:		addq.l	#6,a7
Link.asm:	addq.l	#6,a7
Link.asm:		addq.l	#4,a0			; Skip Data Len (We don't care about it !)
Link.asm:		addq.l	#6,a7	
Link.asm:			addq.l	#8,a7		
Link.asm:				addq.l	#6,a0
Link.asm:				addq.l	#1,a3			; Skip first (0)
Link.asm:		addq.l	#6,a0			; Len
Link.asm:		addq.l	#2,a7
Link.asm:		addq.l	#5,a0			; Skip Size.l (Nothing to read) and Type (Nothing to read).
Link.asm:	addq.l	#2,a7
Link.asm:	addq.l	#4,a7
Link.asm:		addq.l	#4,a7
Link.asm:	addq.l	#1,a0			; Skip 0
Memstr.asm:\S2_End:	addq.l	#1,a1
Memstr.asm:		addq.l	#1,a0
Memstr.asm:		addq.l	#1,a1
Misc2.asm:	addq.l	#8,a7
Misc2.asm:	addq.l	#6,a7
Misc2.asm:	addq.l	#6,a7
Misc2.asm:	addq.l	#1,a1
Misc2.asm:\final_calc	addq.l	#1,a0
Misc2.asm:		addq.l	#4,a7
Misc2.asm:	addq.l	#2,a0				; Skip Handle
Misc2.asm:\Done	addq.l	#6,a7				; Pop frame
Misc.asm:	addq.l	#4,a7				; Pop return address (should be the same as a1)
Misc.asm:	addq.l	#2,a7				; Pop APD timer
Misc.asm:	addq.l	#2,a7
Misc.asm:	addq.l	#2,a7
Misc.asm:	addq.l	#1,a0
Process.asm:		addq.l	#2,a7
Script.asm:	addq.l	#3,a0				; Skip first infos.
Script.asm:	addq.l #1,a2
Script.asm:	addq.l	#3,a2
Script.asm:	addq.l	#6,a2
ShellIO.asm:	addq.l	#4,a7
ShellIO.asm:\exit	addq.l	#8,a7
ShellIO.asm:	addq.l	#1,a1
ShellIO.asm:	addq.l	#1,a1
ShellIO.asm:	addq.l	#6,a7
ShellIO.asm:\Done1:	addq.l	#1,a1					; *a1 == ' ', so skip again ' '
ShellIO.asm:		addq.l	#4,a2				; Next entry
ShellIO.asm:\FDone1	addq.l	#1,a1
ShellIO.asm:	addq.l	#2,a7
ShellIO.asm:	addq.l	#8,a7
ShellIO.asm:	addq.l	#4,a7
ShellIO.asm:		addq.l	#4,a7
ShellIO.asm:		addq.l	#4,a7
ShellIO.asm:	addq.l	#8,a7
System.asm:\Find:	addq.l	#6,a7
System.asm:	addq.l	#4,a7
System.asm:\Skip	addq.l	#1,a0		; Skip this character
System.asm:			addq.l	#1,a2		; Skip first '"'
System.asm:		addq.l	#1,a2		; Skip the 2 next chars '2>'
System.asm:		addq.l	#1,a2		;  Skip the next char '>' or '<'
System.asm:		addq.l	#1,a2		;  Skip the next char '>'
System.asm:			addq.l	#6,a7
System.asm:		addq.l	#2,a1			; default: write
System.asm:			addq.l	#1,a0		; Skip second char '>'
System.asm:			addq.l	#2,a1		; mode: append
System.asm:		addq.l	#4,a7
System.asm:	addq.l	#6,a7		; Pop stack
System.asm:\no:		addq.l	#2,a2			; Next command
System.asm:		addq.l	#2,a7				; Pop pushed Handle
System.asm:		addq.l	#4,a7				; Pop its address
System.asm:	addq.l	#4,a7				; Fix stack Ptr
System.asm:		addq.l	#1,a2
System.asm:		addq.l	#4,a7
Tib.asm:		addq.l	#4,a7				; Pop adress
Tib.asm:		addq.l	#8,a7				; Update stack ptr
Tib.asm:	addq.l	#6,a7			; Pop args of call
Tib.asm:		addq.l	#1,a4
Vat.asm:	addq.l	#4,a7
Vat.asm:\Cont	addq.l	#4,a7
Vat.asm:	addq.l	#2,a0		; skips the 1st word (Max items)
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#2,a0		; Skip max files
Vat.asm:	addq.l	#2,a0		; Skip max files
Vat.asm:	addq.l	#1,a0
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#1,a1
Vat.asm:		addq.l	#2,a7		; Pop size 
Vat.asm:\error	addq.l	#4,a7		; Pop a1
Vat.asm:	addq.l	#1,a1			; a1 -> Name
Vat.asm:	addq.l	#1,a1			; A1 -> ANSI Name of the folder to lock
Vat.asm:	addq.l	#2,a0
Vat.asm:	addq.l	#1,a1					; Check for Src name
Vat.asm:			addq.l	#1,a1			; Find it 
Vat.asm:\end2:		addq.l	#4,a7
Vat.asm:	addq.l	#1,a1
Vat.asm:	addq.l	#1,a1
Vat.asm:	addq.l	#4,a7				; Skip CUR_FOLDER_STR address
Vat.asm:		addq.l	#2,a7			; Skip Folder Handle
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#1,a1
Vat.asm:	addq.l	#1,a0
Vat.asm:	addq.l	#1,a0			; ANSI Ptr
Vat.asm:		addq.l	#1,a1
Vat.asm:	addq.l	#2,a0			; Skip MAX item
Vat.asm:			addq.l	#2,a0
Vat.asm:				addq.l	#2,a0			; Skip Number of entries
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#1,a1
Vat.asm:	addq.l	#1,a0
Vat.asm:	addq.l	#2,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:\NoFree			addq.l	#2,a7				
Vat.asm:			addq.l	#2,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:		addq.l	#8,a7
Vat.asm:		addq.l	#4,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:		addq.l	#4,a7
Vat.asm:			addq.l	#6,a7	
Vat.asm:\invalid2	addq.l	#2,a7
Vat.asm:	addq.l	#4,a7
Vat.asm:	addq.l	#4,a7
Vat.asm:	addq.l	#4,a7
Vat.asm:\Done:	addq.l	#1,a0
Vat.asm:	addq.l	#4,a7
Vat.asm:	addq.l	#6,a7
Vat.asm:		addq.l	#6,a7
Vat.asm:			addq.l	#4,a7
Vat.asm:	addq.l	#4,a7			; SKip return address
Vectors.asm:	addq.l	#2,sp
Window.asm:	addq.l	#4,a7
Window.asm:	addq.l	#2,a7
Window.asm:		addq.l	#8,a7
Window.asm:		addq.l	#4,a7
Window.asm:		addq.l	#8,a7
Window.asm:	addq.l	#8,a7	
Window.asm:\Quit:	addq.l	#8,a7
Window.asm:	addq.l	#8,a7		; Pop Clip & Rect
Window.asm:\Quit:	addq.l	#8,a7
Window.asm:	addq.l	#4,a7
Window.asm:	addq.l	#4,a7
Window.asm:\end	addq.l	#6,a7
Window.asm:	addq.l	#2,sp
Window.asm:	addq.l	#4,a7

Je pense qu'un script devrait faciliter la tâche cheeky (et je suis gentil, j'ai pas listé les subq embarrassed)

Le pire est que tu fais parfois des addq.w #imm,an. J'ai pas vérifié si c'était parce que tu étais sûr d'être dans une BSS avec une adresse sur deux octets, ou dans la table des vecteurs ou que sais-je. Mais parfois (2 ou 3 fois), tu le fais aussi pour sp.