emitnx86.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // x86 specific stuff
  2. #include "py/mpconfig.h"
  3. #include "py/runtime0.h"
  4. #if MICROPY_EMIT_X86
  5. // This is defined so that the assembler exports generic assembler API macros
  6. #define GENERIC_ASM_API (1)
  7. #include "py/asmx86.h"
  8. // x86 needs a table to know how many args a given function has
  9. STATIC byte mp_f_n_args[MP_F_NUMBER_OF] = {
  10. [MP_F_CONVERT_OBJ_TO_NATIVE] = 2,
  11. [MP_F_CONVERT_NATIVE_TO_OBJ] = 2,
  12. [MP_F_LOAD_NAME] = 1,
  13. [MP_F_LOAD_GLOBAL] = 1,
  14. [MP_F_LOAD_BUILD_CLASS] = 0,
  15. [MP_F_LOAD_ATTR] = 2,
  16. [MP_F_LOAD_METHOD] = 3,
  17. [MP_F_LOAD_SUPER_METHOD] = 2,
  18. [MP_F_STORE_NAME] = 2,
  19. [MP_F_STORE_GLOBAL] = 2,
  20. [MP_F_STORE_ATTR] = 3,
  21. [MP_F_OBJ_SUBSCR] = 3,
  22. [MP_F_OBJ_IS_TRUE] = 1,
  23. [MP_F_UNARY_OP] = 2,
  24. [MP_F_BINARY_OP] = 3,
  25. [MP_F_BUILD_TUPLE] = 2,
  26. [MP_F_BUILD_LIST] = 2,
  27. [MP_F_LIST_APPEND] = 2,
  28. [MP_F_BUILD_MAP] = 1,
  29. [MP_F_STORE_MAP] = 3,
  30. #if MICROPY_PY_BUILTINS_SET
  31. [MP_F_BUILD_SET] = 2,
  32. [MP_F_STORE_SET] = 2,
  33. #endif
  34. [MP_F_MAKE_FUNCTION_FROM_RAW_CODE] = 3,
  35. [MP_F_NATIVE_CALL_FUNCTION_N_KW] = 3,
  36. [MP_F_CALL_METHOD_N_KW] = 3,
  37. [MP_F_CALL_METHOD_N_KW_VAR] = 3,
  38. [MP_F_NATIVE_GETITER] = 2,
  39. [MP_F_NATIVE_ITERNEXT] = 1,
  40. [MP_F_NLR_PUSH] = 1,
  41. [MP_F_NLR_POP] = 0,
  42. [MP_F_NATIVE_RAISE] = 1,
  43. [MP_F_IMPORT_NAME] = 3,
  44. [MP_F_IMPORT_FROM] = 2,
  45. [MP_F_IMPORT_ALL] = 1,
  46. #if MICROPY_PY_BUILTINS_SLICE
  47. [MP_F_NEW_SLICE] = 3,
  48. #endif
  49. [MP_F_UNPACK_SEQUENCE] = 3,
  50. [MP_F_UNPACK_EX] = 3,
  51. [MP_F_DELETE_NAME] = 1,
  52. [MP_F_DELETE_GLOBAL] = 1,
  53. [MP_F_NEW_CELL] = 1,
  54. [MP_F_MAKE_CLOSURE_FROM_RAW_CODE] = 3,
  55. [MP_F_SETUP_CODE_STATE] = 5,
  56. [MP_F_SMALL_INT_FLOOR_DIVIDE] = 2,
  57. [MP_F_SMALL_INT_MODULO] = 2,
  58. };
  59. #define N_X86 (1)
  60. #define EXPORT_FUN(name) emit_native_x86_##name
  61. #include "py/emitnative.c"
  62. #endif