Regarde aussi les sources de
TIGCCLIB. Il y a des routines intéressantes dedans. Par exemple celle-là (elle multiplie 2 entiers sur 64 bits, c'est à dire 2
long longs):
|long long multiplication contributed by Kevin Kofler
.data
.xdef __muldi3
.even
__muldi3:
move.w 18(%a7),%d0
mulu 4(%a7),%d0
move.w 16(%a7),%d2
mulu 6(%a7),%d2
add.w %d2,%d0
move.w 14(%a7),%d2
mulu 8(%a7),%d2
add.w %d2,%d0
move.w 12(%a7),%d2
mulu 10(%a7),%d2
add.w %d2,%d0
swap %d0
clr.w %d0
move.w 18(%a7),%d2
mulu 6(%a7),%d2
add.l %d2,%d0
move.w 16(%a7),%d2
mulu 8(%a7),%d2
add.l %d2,%d0
move.w 14(%a7),%d2
mulu 10(%a7),%d2
add.l %d2,%d0
move.w 18(%a7),%d1
mulu 8(%a7),%d1
swap %d1
add.w %d1,%d0
clr.w %d1
swap %d0
addx.w %d1,%d0
swap %d0
move.w 16(%a7),%d2
mulu 10(%a7),%d2
swap %d2
add.w %d2,%d0
clr.w %d2
swap %d0
addx.w %d2,%d0
swap %d0
add.l %d2,%d1
moveq.l #0,%d2
addx.l %d2,%d0
move.w 18(%a7),%d2
mulu 10(%a7),%d2
add.l %d2,%d1
moveq.l #0,%d2
addx.l %d2,%d0
rts
J'ai aussi la même en
A68k si tu préfères:
section ".data"
xdef __muldi3
__muldi3:
move.w 18(a7),d0
mulu 4(a7),d0
move.w 16(a7),d2
mulu 6(a7),d2
add.w d2,d0
move.w 14(a7),d2
mulu 8(a7),d2
add.w d2,d0
move.w 12(a7),d2
mulu 10(a7),d2
add.w d2,d0
swap d0
clr.w d0
move.w 18(a7),d2
mulu 6(a7),d2
add.l d2,d0
move.w 16(a7),d2
mulu 8(a7),d2
add.l d2,d0
move.w 14(a7),d2
mulu 10(a7),d2
add.l d2,d0
move.w 18(a7),d1
mulu 8(a7),d1
swap d1
add.w d1,d0
clr.w d1
swap d0
addx.w d1,d0
swap d0
move.w 16(a7),d2
mulu 10(a7),d2
swap d2
add.w d2,d0
clr.w d2
swap d0
addx.w d2,d0
swap d0
add.l d2,d1
moveq.l #0,d2
addx.l d2,d0
move.w 18(a7),d2
mulu 10(a7),d2
add.l d2,d1
moveq.l #0,d2
addx.l d2,d0
rts
Sinon, j'espère que tu as lu le
68kguide, c'est important pour comprendre entièrement mon tutorial (et pour vraiment savoir programmer en assembleur). Je te conseille le paquet
92guide sur ticalc.org, il y a le
68kguide et quelques autres trucs (vieux, mais pas toujours faux - ceci dit, la documentation de
TIGCC est la référence n°1), dont un
newbies.txt qui devrait aider pour débuter et pas seulement (la table des combinaisons
cmp/b?? avec leur équivalent C est bien pratique même si on n'est plus un débutant).