Re: WebAssembly
От: WolfHound  
Дата: 19.06.15 18:33
Оценка: +1 -1
Здравствуйте, D. Mon, Вы писали:

Читал https://github.com/WebAssembly/v8-native-prototype/blob/master/src/wasm/wasm-opcodes.h
Плакал кровавыми слезами.
Очередную уродливую ВМ делают.
.НЕТа с жабой им мало.
Почему вот это опкоды?
  Скрытый текст
// Integer binops.
#define FOREACH_I_II_OPCODE(V) \
  V(Int32Add, 0x20)            \
  V(Int32Sub, 0x21)            \
  V(Int32Mul, 0x22)            \
  V(Int32SDiv, 0x23)           \
  V(Int32UDiv, 0x24)           \
  V(Int32SMod, 0x25)           \
  V(Int32UMod, 0x26)           \
  V(Int32And, 0x27)            \
  V(Int32Ior, 0x28)            \
  V(Int32Xor, 0x29)            \
  V(Int32Shl, 0x2a)            \
  V(Int32Shr, 0x2b)            \
  V(Int32Sar, 0x2c)            \
  V(Int32Eq, 0x2d)             \
  V(Int32Slt, 0x2e)            \
  V(Int32Sle, 0x2f)            \
  V(Int32Ult, 0x30)            \
  V(Int32Ule, 0x31)

// Float64 binops that produce float64.
#define FOREACH_D_DD_OPCODE(V) \
  V(Float64Add, 0x40)          \
  V(Float64Sub, 0x41)          \
  V(Float64Mul, 0x42)          \
  V(Float64Div, 0x43)          \
  V(Float64Mod, 0x44)

// Float64 binops that produce int32.
#define FOREACH_I_DD_OPCODE(V) \
  V(Float64Eq, 0x45)           \
  V(Float64Lt, 0x46)           \
  V(Float64Le, 0x47)

// Float32 binops that produce float32.
#define FOREACH_F_FF_OPCODE(V) \
  V(Float32Add, 0x50)          \
  V(Float32Sub, 0x51)          \
  V(Float32Mul, 0x52)          \
  V(Float32Div, 0x53)          \
  V(Float32Mod, 0x54)

// Float32 binops that produce int32.
#define FOREACH_I_FF_OPCODE(V) \
  V(Float32Eq, 0x55)           \
  V(Float32Lt, 0x56)           \
  V(Float32Le, 0x57)

// Conversions between primitive types.
#define FOREACH_CONVERSION_OPCODE(V) \
  V(Int32FromFloat32, 0x60)          \
  V(Int32FromFloat64, 0x61)          \
  V(Uint32FromFloat32, 0x62)         \
  V(Uint32FromFloat64, 0x63)         \
  V(Float64FromSInt32, 0x64)         \
  V(Float64FromUInt32, 0x65)         \
  V(Float64FromFloat32, 0x66)        \
  V(Float32FromSInt32, 0x67)         \
  V(Float32FromUInt32, 0x68)         \
  V(Float32FromFloat64, 0x69)

Это всё должно быть обычными функциями.

Глядя на остальные опкоды тоже плакать хочется.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.