45Fermer47
PpHdLe 03/03/2008 à 21:09
Bon PedroM compile avec l'option cut-ranges. top
Et en traduisant tous les bsr en jsr, et en laissant faire ld-tigcc, je ne perds que moins de 100 octets.
C'est raisonnable, donc je laisse (Mais ld-tigcc ne les détecte pas tous tongue).

Cependant, un vrai premier problème:
		lea	stderr,a2		; stderr	
		cmpi.b	#'2',d0			; stderr is 2>. First check 2
		bne.s	\EndRedirect		; No, so end of redirection
		move.b	(a0)+,d0		; Read next char
		cmpi.b	#'>',d0			; Check second char
		bne.s	\EndRedirect		; no
		; Does the redirection
\Redirect		cmpi.b	#' ',(a0)+
			beq.s	\Redirect
		tst.b	-(a0)		; Redirection: Check if there is at least a char
		beq.s	\EndRedirect
		jsr	freopen		; Reopen stream to a file
		move.l	a0,d0
		beq.s	\ResetRedirect	; Error: Reset to default
		subq.w	#4,d4
		bhi.s	\RedirectLoop
\ResetRedirect:
	jsr	InitTerminal
\EndRedirect
	rts


ld-tigcc m'optimise le jsr InitTerminal / rts
en un bra.w InitTerminal et en virant le rts.
Ce qui fait que ca plante dès qu'on entre une instruction.

Voici l'extrait de Makefile:
A68K=tigcc -c -WA,-a  --cut-ranges
A68K_INCLUDE=-WA,-ic -WA,-i$(PREOS_SRC)
S2ASM=../bin/s2asm
MAKETIB=tigcc -v --flash-os --flash-os-bss-start=0x5B00 --outputbin --optimize-code --cut-ranges


Je pense qu'a68k n'émet pas de reloc dans ce cas là, et donc ld-tigcc ne le voyant pas, l'optimize à tord. Tu confirmes ?