例如,我们有一个DWORD = $ 12345678
哪个指令会更快 - 绝对或移动()?
var a:DWORD = $12345678;
b:Array[0..3] of byte absolute a;
var a:DWORD = $12345678;b:Array[0..3] of Byte
begin
Move(a,b,4);
end;
具体来说,我问的是'绝对'到底是做什么的,因为如果它没有使用额外的内存来编写那个byteArray那么我没有理由在这种情况下使用Move而不是绝对,那么'绝对'是如何工作的?
答案 0 :(得分:18)
绝对不执行任何操作;它声明var的地址与另一个var的地址相同。
Move()执行复制操作,这需要一些时间。
绝对地,两个变量都存储在同一个地址,第二个声明将变量存储在不同的位置。
答案 1 :(得分:9)
'absolute'指令指向与指定变量相同的内存。没有代码被执行,所以是的,它比Move或任何其他代码更快。
答案 2 :(得分:6)
'绝对'只是另一种类型转换形式,就好像你有一个带有PByte指针的'A'DWORD的位置引用来处理字节为:PByte(@A)^ [0]:= 3 ,PByte(@A)^ [1]:= 4等。您正在以另一种方式戳戳(或读取)DWORD变量。 Pascal是一种强类型语言,但是使用类型转换(或ABSOLUTE),你几乎可以做任何事情。 BRI
答案 3 :(得分:1)
'绝对'是如何工作的?