Use on AVR

Torbjorn Granlund tg at
Sat Jun 9 17:15:33 CEST 2012

bodrato at writes:

  IIRC, with avr-gcc, the unsigned long type exists and it is 32 bits long.
  Using them for all operations probably is not the faster way to handle
  long integers, because it forces the compiler to use many registers and a
  lot of code, but it should work.
I tried avr-gcc both from FreeBSD's ports and from Debian's apt:

Attempt 1:

  tom$ avr-gcc -I. -O -S mini-gmp.c
  mini-gmp.c: In function 'mpz_out_str':
  mini-gmp.c:3996:9: warning: incompatible implicit declaration of
  built-in function 'fwrite' [enabled by default]
  mini-gmp.c: In function 'mpn_div_qr_preinv':
  mini-gmp.c:1012:1: error: unable to find a register to spill in class
  mini-gmp.c:1012:1: error: this is the insn:
  (insn 238 236 239 10 (set (reg/v:SI 219 [ n0 ])
          (mem:SI (pre_dec:HI (reg:HI 2 r2 [orig:239 ivtmp.626 ] [239]))
          [0 MEM[base: D.7131_301, offset: 0B]+0 S4 A8])) mini-gmp.c:885
          26 {*movsi}
       (expr_list:REG_INC (reg:HI 2 r2 [orig:239 ivtmp.626 ] [239])
  mini-gmp.c:1012: confused by earlier errors, bailing out

Attempt 2:

  tom$ avr-gcc -mint8 -I. -O -S mini-gmp.c
  <built-in>:0:0: internal compiler error: Segmentation fault
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <> for instructions.

Not too encouraging.


More information about the gmp-discuss mailing list