Skip to content

Commit 6df4b7f

Browse files
committed
fix: implement conditional MODEXP_LEAD / PRICING calls to OOB
1 parent 92da7aa commit 6df4b7f

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

hub/osaka/constraints/instruction-handling/call/precompiles/modexp/common/__05__exponent_leading_word_extraction_and_analysis_row.lisp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
(:guard (precompile-processing---MODEXP---standard-precondition))
3333
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3434
(begin
35-
(eq! (precompile-processing---MODEXP---call-EXP-to-analyze-leading-word) (precompile-processing---MODEXP---extract-leading-word) )
36-
(eq! (precompile-processing---MODEXP---call-MMU-to-extract-leading-word) (precompile-processing---MODEXP---extract-leading-word) )
37-
(eq! (precompile-processing---MODEXP---call-OOB-on-leading-word-row) 1 )
35+
(eq! (precompile-processing---MODEXP---call-OOB-on-leading-word-row) (precompile-processing---MODEXP---all-byte-sizes-are-in-bounds) )
36+
(eq! (precompile-processing---MODEXP---call-EXP-to-analyze-leading-word) (precompile-processing---MODEXP---extract-leading-word) )
37+
(eq! (precompile-processing---MODEXP---call-MMU-to-extract-leading-word) (precompile-processing---MODEXP---extract-leading-word) )
3838
(eq! (+ (shift misc/MXP_FLAG precompile-processing---MODEXP---misc-row-offset---leading-word-analysis)
3939
(shift misc/STP_FLAG precompile-processing---MODEXP---misc-row-offset---leading-word-analysis))
4040
0)
@@ -44,11 +44,12 @@
4444
(defconstraint precompile-processing---MODEXP---lead-log-analysis---setting-OOB-instruction
4545
(:guard (precompile-processing---MODEXP---standard-precondition))
4646
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
47-
(set-OOB-instruction---modexp-lead precompile-processing---MODEXP---misc-row-offset---leading-word-analysis ;; offset
48-
(precompile-processing---MODEXP---bbs-normalized) ;; low part of bbs (base byte size)
49-
(precompile-processing---dup-cds) ;; call data size
50-
(precompile-processing---MODEXP---ebs-normalized) ;; low part of ebs (exponent byte size)
51-
))
47+
(if-not-zero (precompile-processing---MODEXP---call-OOB-on-leading-word-row)
48+
(set-OOB-instruction---modexp-lead precompile-processing---MODEXP---misc-row-offset---leading-word-analysis ;; offset
49+
(precompile-processing---MODEXP---bbs-normalized) ;; low part of bbs (base byte size)
50+
(precompile-processing---dup-cds) ;; call data size
51+
(precompile-processing---MODEXP---ebs-normalized) ;; low part of ebs (exponent byte size)
52+
)))
5253

5354
(defun (precompile-processing---MODEXP---extract-leading-word) (shift [misc/OOB_DATA 4] precompile-processing---MODEXP---misc-row-offset---leading-word-analysis)) ;; ""
5455
(defun (precompile-processing---MODEXP---cds-cutoff) (shift [misc/OOB_DATA 6] precompile-processing---MODEXP---misc-row-offset---leading-word-analysis)) ;; ""

hub/osaka/constraints/instruction-handling/call/precompiles/modexp/common/__06__pricing_row.lisp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,29 @@
2323
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2424

2525

26+
27+
(defun (precompile-processing---MODEXP---call-OOB-on-pricing-row) (shift misc/OOB_FLAG precompile-processing---MODEXP---misc-row-offset---pricing))
28+
29+
30+
2631
(defconstraint precompile-processing---MODEXP---pricing-analysis---setting-misc-module-flags
2732
(:guard (precompile-processing---MODEXP---standard-precondition))
2833
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2934
(eq! (weighted-MISC-flag-sum precompile-processing---MODEXP---misc-row-offset---pricing)
30-
MISC_WEIGHT_OOB
35+
(* MISC_WEIGHT_OOB (precompile-processing---MODEXP---all-byte-sizes-are-in-bounds))
3136
))
3237

3338

3439
(defconstraint precompile-processing---MODEXP---pricing-analysis---setting-OOB-instruction
3540
(:guard (precompile-processing---MODEXP---standard-precondition))
3641
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
37-
(set-OOB-instruction---modexp-pricing precompile-processing---MODEXP---misc-row-offset---pricing ;; offset
38-
(precompile-processing---dup-call-gas) ;; call gas i.e. gas provided to the precompile
39-
(precompile-processing---dup-r@c) ;; return at capacity
40-
(precompile-processing---MODEXP---modexp-full-log) ;; leading (≤) word log of exponent
41-
(precompile-processing---MODEXP---max-mbs-bbs) ;; call data size
42-
))
42+
(if-not-zero (precompile-processing---MODEXP---call-OOB-on-pricing-row)
43+
(set-OOB-instruction---modexp-pricing precompile-processing---MODEXP---misc-row-offset---pricing ;; offset
44+
(precompile-processing---dup-call-gas) ;; call gas i.e. gas provided to the precompile
45+
(precompile-processing---dup-r@c) ;; return at capacity
46+
(precompile-processing---MODEXP---modexp-full-log) ;; leading (≤) word log of exponent
47+
(precompile-processing---MODEXP---max-mbs-bbs) ;; call data size
48+
)))
4349

4450
(defun (precompile-processing---MODEXP---ram-success) (shift [misc/OOB_DATA 4] precompile-processing---MODEXP---misc-row-offset---pricing))
4551
(defun (precompile-processing---MODEXP---return-gas) (shift [misc/OOB_DATA 5] precompile-processing---MODEXP---misc-row-offset---pricing))

0 commit comments

Comments
 (0)