2020.11.6
1.找main函數的方法
1.找輸出法:如果main函數有輸出內容,不斷F8直到有輸出。重新運行,打斷點+F4+F7進入函數,繼續F8。。。直到看到標誌性內容
2.字符串查找法:如果能確定輸出是連續字符串,可以直接找。右鍵-搜索,然後去引用裏找就行了
2.lea,mov,[]的區別
對於lea指令
第二操作數是寄存器且必須加[],代表取值,並將該值存到第一操作數裏
對於mov指令
不加[]代表取值,加[]代表取地址
3.妙妙的x++與++x實驗
大蔥昨天半夜給了我一份奇怪的代碼,反正運行出來的結果很奇怪
今天實驗一下
對於這種索引裏帶語句的,猜測代碼運行的優先級應該如下:
左側++x > 左側取地址 > 左側x++ > 右側++x > 右側求值 > 右側x++ > 賦值
(1 對於左右側都有++x,x++而且都是在索引的情況,符合預期
(2 右側的x不是索引
E1:這種可以正常編譯
E2:這種卻根本不能編譯
真是神奇
E3:如果把右側的x+1改成x++,卻能編譯並運行。。。且反編譯符合預期
E4:不過如果這樣寫,卻和E2不一樣,它能編譯!但是卻不符合預期,右側x++優先於取值進行了!
調換1和x++的順序,結果也沒有改變
我蒙了。。。以後看看編譯器是咋寫的,是不是辣雞mingw的問題