2009-12-16 18 views

cevap

11

Derleyicide gizlenen çok sayıda %foo özel ilkel madde var. Ocaml derleyici kaynaklarında en iyi listenin bytecomp/translcore.ml sürümünde olduğunu düşünüyorum. Diyelim ki ben burada listeleyebilirsiniz kaç görelim:

  • Karşılaştırmalar:% eşit,% notequal,% lessthan,% den üstün,% lessequal,% greaterequal,% int için

Bu karşılaştırmalar uzman var sürümleri karşılaştırmak , float, string, nativeint, int32 ve int64, ve tür derleme zamanında biliniyorsa otomatik uzmanlaşacaktır.

  • Diğer ilkellerini: %identity, %ignore, %field0, %field1, %setfield0, %makeblock, %makemutable, %raise, %incr, %decr, %seqand, %seqor, %boolnot
  • Int ops: %negint, %succint, %predint, %addint, %subint, %mulint, %divint, %modint, %andint, %orint, %xorint, %lslint, %lsrint, %asrint
  • Int karşılaştırıcı (??): %eq, %noteq, %ltint, %leint, %gtint, %geint
  • Şamandıra ops: %intoffloat, %floatofint, %negfloat, %absfloat, %addfloat, %subfloat, %mulfloat, %divfloat
  • Şamandıra karşılaştırıcılar: %eqfloat, %noteqfloat, %ltfloat, %lefloat, %gtfloat, %gefloat
  • Yaylı ops: %string_length, %string_safe_get, %string_safe_set, %string_unsafe_get, %string_unsafe_set
  • Dizi sayısı: %array_length, %array_safe_get, %array_safe_set, %array_unsafe_get, %array_unsafe_set
  • Nesne manipülasyon: %obj_size, %obj_field, %obj_set_field, %obj_is_int
  • Tembel: %lazy_force
  • Nativeint, int32, int64 ops: %{nativeint,int32,int64}: _of_int, _to_int, _neg, _add, _sub, _mul, _div, _mod, _and, _or, _xor, _lsl, _lsr, _asr
  • Int dönüşümleri: %nativeint_{of,to}_int32, int64_{of,to}_int32, int64_{of,to}_nativeint
  • Bigarray operasyonları: %caml_ba_ref_{1,2,3}, %caml_ba_set_{1,2,3}, %caml_ba_unsafe_ref_{1,2,3}, %caml_ba_unsafe_set_{1,2,3}
  • Object Oriented: %send, %sendself, %sendcache

Tek bulabildiğim bu.

8

harici harici, özel olarak derleyici tarafından ele alınacak özel dıştır. Örneğin, int_of_float ile, ocamlc onu bir C işlevinin çağrısına derler, ancak ocamlopt ile, onu çiftden tamsayıya dönüştüren bazı özel assembler opcode'una derler.

+0

Böyle bir şey olup olmadığını merak ediyordum. Bu özelliğin ve mevcut sihirli adların herhangi bir yerde belgelenip belgelenmediğini biliyor musunuz? –