| 014 29.08.2009, 11:27 Uhr
 Olli
 
 
   
 
 | Nun habe ich auch noch rausgefunden, wie man Floating Point Funktionen unter WEGA "disassembliert" und auch noch im PLZ/ASM (oder cas) verwendet... bringt zwar nix, da wir gar keine FPU haben, aber Funktionen sind in der libc  
 disassemblierter code mit extended instructions:
 
 
 | Quellcode: |  | 0044                 abf3  dec     r15,#40046             0ffcc401  ext0f   #%0ffcc401
 004a             8e04c640  ext8e   #%8e04c640
 004e         14023f800000  ldl     rr2,#%3f800000
 0054             0b071388  cp      r7,#%1388
 0058                 e705  jr      c,%0064
 005a                 a52e  set     r2,#14
 005c             8f088201  ext8f   #%8f088201
 0060                 a9f3  inc     r15,#4
 0062                 9e08  ret
 
 | 
 Man bastelt sich ein executable was diese pow10() funktion verwendet und benutzt dann adb zur disassemblierung:
 
 
 
 | Quellcode: |  | #61 adb a.outADB: P8000 1.6
 ? 0x0044/i
 %0044:          dec     sp,#4
 ? 0x0046/i
 %0046:          fldctl  @sp,fflags
 ? 0x004A/i
 %004a:          fsetmode        rn
 ? 0x004e/i
 %004e:          ldl     rr2,#%3f800000
 ? 0x005c/i
 %005c:          flds    f0,r2
 ?
 
 | 
 Dann stueckelt man das obere disassemblierte mit diesen extended Aufrufen in eine PLZ/ASM Datei zusammen:
 
 
 
 | Quellcode: |  | #67 cat pow10.spow10 module
 global
 _pow10 procedure
 entry
 dec     r15,#4
 fldctl  @r15,fflags
 fsetmode rn
 ldl     rr2,#%3f800000
 cp      r7,#%1388
 jr      c,L1
 set     r2,#14
 flds    f0,r2
 inc     r15,#4
 ret
 L1:
 end _pow10
 end pow10
 
 | 
 Und dann wird compiliert - aber mit "-f" fuer floating point Support!
 
 
 
 | Quellcode: |  | #66 as -f -o pow10.o pow10.s #67 objdu pow10.o
 File pow10.o
 Image size:     32
 Bss size:       0
 Entry point:    0x0
 Segment 0
 Text size:      32
 Data size:      0
 Bss size:       0
 Text......
 
 0000:     abf3  0ffc  c401  8e04  c640  1402  3f80  0000
 0010:     0b07  1388  e705  a52e  8f08  8201  a9f3  9e08
 Data......
 
 #69
 
 | 
 Gleicher Objektcode wenn man mit dem Disassemblierten Listing oben vergleicht
  --
 P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
 |