---
# System prepended metadata

title: comentaris

---

# comentaris

* He decidit importar RBinBind *binb; dins de RArch
  * aixi podem portar wasm, pyc, dalvik i java facilment


# els q costaran una mica de portar

- pyc
  - te una global q shauria de moure al Session *data
  - fa servir get_reg_profile i set_reg_profile buuuuuuu
- pic
  - gestiona coses de registres dins duna sram q s'alocata dins del plugin, aixo es el mateix q tenir globals, i shauria de moure al data o eliminarho per complert, pq aixo es pot emular amb r_io perfectament i no faria falta aixo, com a molt es podria fer q un RArch.cmd() retornes un script q sexecuti per inicialitzar r2 amb la config de la arch, rollo crear mapes de memoria, inicialitzar registres,e tc.. i com q seria una string, no cal afegir bindings de res a r_arch
- gb
  - afegeix una instruccio a la vm de esil. aquest callback no esta clar com o quan sexecuta i imho hauria de tenir un altre nom

- dalvik i java plugins necessiten resoldre strings per fer el disasm be, sha de repensar si moureho a saco o fer q es processi dins de RParse, ja q es la seva "feina". aixi el disasm 

* anaj.java tb afegeixe el cmd_exit. q imho es una guarrada pero util pq no hi ha RArch.cmd() i en el fons actua com un plugin de io o de core.
   - de fet aquesta logica la veig millor com a plugin d'anal enlloc de fer 
- snes
  - te una var global per les flags. shauria d'eliminar o moure dins del session. el tema sq aixo no shauria de fer servir si estigues implementat l'esil. 
  - no se si hi ha gaires testos daixo
  - estaria be implementar l'assembler tambe
- tms320
  - te globals q shaurien deliminar o moure dins del session
  - es podria optimizar si passem mask a tms320_dasm() per evitar q desensambli la string

# els facils de portar

- riscv
  - te assembler i disassembler i no fa coses rares, hauria de ser facil de portar
- propeller
  - no te esil. es podria afegir facilment a l'hora de portar el plugin, afegit un if (mask & ..ESIL) i cridant a una funcio q seteji op->esil depenent de l'opcode
- lh5801
- lm32
- i8080 - hauria de ser facil nom escal moure libr/asm/arch/i8080 a libr/arch/p/i8080
- bf
   - el field de esil = true del plugin lhas desborrar, pq no es feia servir tampoc
   -h h8300 - hauria de ser facil
- bpf
  - hauria de ser bastant facil de portar, suporta encode i decode
- kvx
  - hauria de ser facil, lo unic es el setregprofile q canvia la signatura tb
- chip8
  - el mask no es fa servir be pq lo unic q evita es q faci el strdup, pero el format string es fa igualment, i shauria de ficar dins d'un if (mask & R_ARCH_OP_MASK_DISASM tb)
   - no te assembler, i es una arch bastant facil, si t'animes a ferlo pot molar, pq aixi anem areaprofitant el refactoring per millorar els plugins, no nomes mourels. sino
- or1k
  - fa servir globals q shan de moure adins del *data del RArchSession
-cr16
 - 
- 6502
- mcs96
- i8051
  - te un parell de globals definides amb R_TH_LOCAL, shaurien deliminar i moure a dins del *data del RArchSession quan s'instancien
   - el esil-init i fini s'esborren. de fet no fan res ja, i elq  intentava implementar eraq  els registres es mapejessin en memoria. ara amb r2 es pot fer un o reg://gpr i ja ho tens mapejat on vulguis aixi qno cal

GNU
   - alpha
      - cal moure els asm/arch/* cap a dins de arch/p/* encara q no acabo de tenir clara
      - es pot aprofitar per simplificar una mica mes la definicio d plugins de binutils afegint una macro q implmeenti alpha_buffer_read_memory, symbol_at_address i memory_error_func
       - aquestes macros s'han de dir DECLARE_GENERIC_...
    - arc 
    - cris
    - hppa-gnu
    - lalai
    - pdp11
    - s390
    - loongarch
    - m68k
    - nios1
    - mips-gnu --- XXX have 2 global! remove them

v35:
   - falta el callback de anal_preludes()
   - nose si tenim el callback de mnemonics..diria q si, pero estaria be comprovarho i afegir algun test sino ( la comanda es aoml )

capstone
 - son els mes dificils, aixi q millor deixemlos pel final