1. Assembler / Говнокод #25970

    −1

    1. 1
    stwu      r1, -0x18(r1)

    PPC как бы говорит нам

    Запостил: nymuHckuu_nemyx, 17 Октября 2019

    Комментарии (95) RSS

    • Перевел на x86:
      mov [eax - 0x18], eax
      А в чем говно, я не понял?
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • If GPR RA is not 0 and the storage access does not cause an Alignment Interrupt or a Data Storage Interrupt, then EA is placed into GPR RA.

        https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/assembler/idalangref_stwu_stu_instrs.html

        Если бы были разные регистры, выглядело бы так:
        lea eax, [eax - 0x18]
        mov [eax], ebx
        Случай, когда eax изначально равнялось нулю или когда произошло исключение, я не рассматриваю.

        Но тут слева и справа один и тот же регистр. Возможно, это UB.
        Ответить
        • Оказывается, не UB, а вполне штатная инструкция. После stwu r1, -0x18(r1) значение регистра r1 уменьшится на 0x18.
          А что будет лежать по адресу [r1-0x18]: старое значение r1 или новое?

          По картинкам похоже, что старое.
          Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
    • Проведена дезинфекция
      Ответить
      • Это цензура или тебя штырит от дезинфекции? (Что-то её много! Мега-много!)
        Ответить

    Добавить комментарий