Skip to content

Birthday Paradox is miscompiled, += is compiled incorrectly #15

@FlatAssembler

Description

@FlatAssembler

Birthday Paradox is miscompiled, and my guess is that the error in the outputted assembly is somewhere here:

			koliko_ljudi_ima_rodendan_na_taj_dan[
						mod(
							nasumican_broj()      ,
							koliko_godina_ima_dana,
						)
					] += 1;
            ;; Line 43, Column 9, token "+="
            ;; Line 43, Column 9, token ":="
            ;;Assigning (+ (koliko_ljudi_ima_rodendan_na_taj_dan (mod nasumican_broj( koliko_godina_ima_dana)) 1) to (koliko_ljudi_ima_rodendan_na_taj_dan (mod nasumican_broj( koliko_godina_ima_dana)).
            (i32.store16
              (i32.add
                (i32.const 4167) ;;koliko_ljudi_ima_rodendan_na_taj_dan[
                (i32.mul
                  (i32.const 2)
                    ;; Line 39, Column 7, token "mod("
                    (i32.rem_s
                      ;; Line 40, Column 8, token "nasumican_broj("
                      (call $nasumican_broj
                      )
                      ;; Line 41, Column 8, token "koliko_godina_ima_dana"
                      (i32.load16_s
                        (i32.sub
                          (global.get $stack_pointer)
                          (i32.const 2020) ;;koliko_godina_ima_dana
                        )
                      )
                    )
                )
              )
              (i32.wrap_i64
                ;; Line 43, Column 9, token "+"
                (i64.add
                  (i64.extend_i32_s
                    ;; Line 38, Column 4, token "koliko_ljudi_ima_rodendan_na_taj_dan["
                    (i32.load16_s
                      (i32.add
                        (i32.const 4167) ;;koliko_ljudi_ima_rodendan_na_taj_dan[
                        (i32.mul
                          (i32.const 2)
                            ;; Line 39, Column 7, token "mod("
                            (i32.rem_s
                              ;; Line 40, Column 8, token "nasumican_broj("
                              (call $nasumican_broj
                              )
                              ;; Line 41, Column 8, token "koliko_godina_ima_dana"
                              (i32.load16_s
                                (i32.sub
                                  (global.get $stack_pointer)
                                  (i32.const 2020) ;;koliko_godina_ima_dana
                                )
                              )
                            )
                        )
                      )
                    )
                  )
                  ;; Line 43, Column 11, token "1"
                  (i64.const 1)
                )
              )
            )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions