package jasmin
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Compiler for High-Assurance and High-Speed Cryptography
Install
dune-project
Dependency
Authors
Maintainers
Sources
jasmin-compiler-v2026.09.0.tar.bz2
sha256=11fec571efb9f7b3a47fea324b4e2a68289e0b73b2248d237eccf139b5218190
doc/src/jasmin.jasmin/arm_arch_full.ml.html
Source file arm_arch_full.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69open Arch_decl open Arm_common open Arm_decl module type Arm_input = sig val call_conv : (register, Arch_utils.empty, Arch_utils.empty, rflag, condt) calling_convention end module Arm_core = struct type reg = register type regx = Arch_utils.empty type xreg = Arch_utils.empty type nonrec rflag = rflag type cond = condt type asm_op = Arm_instr_decl.arm_op type extra_op = Arm_extra.arm_extra_op let atoI = X86_arch_full.atoI arm_decl let asm_e = Arm_extra.arm_extra atoI let aparams = Arm_params.arm_params atoI let known_implicits = ["NF", "_nf_"; "ZF", "_zf_"; "CF", "_cf_"; "VF", "_vf_"] let alloc_stack_need_extra sz = not (Arm_params_core.is_arith_small (Conv.cz_of_z sz)) let is_ct_asm_op (o : asm_op) = match o with | ARM_op( (SDIV | UDIV), _) -> false | _ -> true (* All of the extra ops compile into CT instructions (no DIV). *) let is_ct_asm_extra (_o : extra_op) = true end module Arm (Lowering_params : Arm_input) : Arch_full.Core_arch with type reg = register and type regx = Arch_utils.empty and type xreg = Arch_utils.empty and type rflag = rflag and type cond = condt and type asm_op = Arm_instr_decl.arm_op and type extra_op = Arm_extra.arm_extra_op = struct include Arm_core include Lowering_params (* TODO_ARM: r9 is a platform register. (cf. arch_decl) Here we assume it's just a variable register. *) let not_saved_stack = (Arm_params.arm_liparams atoI).lip_not_saved_stack let pp_asm = Pp_arm_m4.print_prog let callstyle = Arch_full.ByReg { call = Some LR; return = false } (* Armv7-M guarantees that stack pointer values are at least 4-byte aligned: writes to SP force bits [1:0] to zero (Arm v7-M Architecture Reference Manual, B1.5.7), so a frame moving SP by a non-multiple of 4 would be silently rounded by the hardware. *) let sp_min_align = Wsize.U32 let max_store_size = Wsize.U32 let internal_call_conv = Arm_decl.arm_internal_call_conv end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>