package asmgen
var ArchARM = &Arch {
Name : "arm" ,
WordBits : 32 ,
WordBytes : 4 ,
CarrySafeLoop : true ,
regs : []string {
"R0" , "R1" , "R2" , "R3" , "R4" , "R5" , "R6" , "R7" , "R8" , "R9" , "R11" , "R12" ,
},
regShift : true ,
mov : "MOVW" ,
add : "ADD" ,
adds : "ADD.S" ,
adc : "ADC" ,
adcs : "ADC.S" ,
sub : "SUB" ,
subs : "SUB.S" ,
sbc : "SBC" ,
sbcs : "SBC.S" ,
rsb : "RSB" ,
and : "AND" ,
or : "ORR" ,
xor : "EOR" ,
mulWideF : armMulWide ,
addWords : "ADD %s<<2, %s, %s" ,
jmpZero : "TEQ $0, %s; BEQ %s" ,
jmpNonZero : "TEQ $0, %s; BNE %s" ,
loadIncN : armLoadIncN ,
loadDecN : armLoadDecN ,
storeIncN : armStoreIncN ,
storeDecN : armStoreDecN ,
}
func armMulWide(a *Asm , src1 , src2 , dstlo , dsthi Reg ) {
a .Printf ("\tMULLU %s, %s, (%s, %s)\n" , src1 , src2 , dsthi , dstlo )
}
func armLoadIncN(a *Asm , p RegPtr , regs []Reg ) {
for _ , r := range regs {
a .Printf ("\tMOVW.P %d(%s), %s\n" , a .Arch .WordBytes , p , r )
}
}
func armLoadDecN(a *Asm , p RegPtr , regs []Reg ) {
for _ , r := range regs {
a .Printf ("\tMOVW.W %d(%s), %s\n" , -a .Arch .WordBytes , p , r )
}
}
func armStoreIncN(a *Asm , p RegPtr , regs []Reg ) {
for _ , r := range regs {
a .Printf ("\tMOVW.P %s, %d(%s)\n" , r , a .Arch .WordBytes , p )
}
}
func armStoreDecN(a *Asm , p RegPtr , regs []Reg ) {
for _ , r := range regs {
a .Printf ("\tMOVW.W %s, %d(%s)\n" , r , -a .Arch .WordBytes , p )
}
}
The pages are generated with Golds v0.7.7-preview . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .