for循环话语奇怪的自己倒序了是什么原因
for循环语句奇怪的自己倒序了是什么原因
for i:=1 to 7 do 这句应该是i从1每次加1直到7,可是我的程序中在跟踪时发现i自己从7开始向下减1,这是怎么回事啊?
for i:=1 to 30 do 跟踪发现i是从30开始向下减
for i:=0 to 47 do 跟踪发现i是从48开始向下减
我并没有写成 downto 为什么自动成了倒序了?我的平台是delphi2010 系统是WIN7 以前一直正常,今天发现这个问题的。
------解决方案--------------------
你在循环的时候 并没有用到你的循环体 i
这个循环体i 被放到了 ECX 计数寄存器里面. 每次循环减一,这样效率好!
------解决方案--------------------
如果你没用到循环变量就会被优化成倒序.因为倒序代码会小一点.
如果循环变量减到0,标志位寄存器会被打上0标志.JZ指令跳转即可,无需做cmp操作.
for i:=1 to 7 do 这句应该是i从1每次加1直到7,可是我的程序中在跟踪时发现i自己从7开始向下减1,这是怎么回事啊?
for i:=1 to 30 do 跟踪发现i是从30开始向下减
for i:=0 to 47 do 跟踪发现i是从48开始向下减
我并没有写成 downto 为什么自动成了倒序了?我的平台是delphi2010 系统是WIN7 以前一直正常,今天发现这个问题的。
------解决方案--------------------
你在循环的时候 并没有用到你的循环体 i
这个循环体i 被放到了 ECX 计数寄存器里面. 每次循环减一,这样效率好!
------解决方案--------------------
如果你没用到循环变量就会被优化成倒序.因为倒序代码会小一点.
如果循环变量减到0,标志位寄存器会被打上0标志.JZ指令跳转即可,无需做cmp操作.