quote:以下是引用youhm在2011-12-19 15:39:45的发言:quote:以下是引用鹅卵石在2011-12-19 14:27:11的发言:
有网友实验得出:“用一条指令将P##TABLE(注:pointer类型)送给累加器1,第二条指令将累加器1中的数据传送到AR1,当#TABLE为DB4.DBW6时,累加器2 ACCU 2为4,累加器1 ACCU1为84000030,见图。参数类型pointer不是6个字节吗?为何通过这个程序试验得到的结果是累加器2记录的是Byte0和Byte1,而累加器1记录的是Byte2 Byte3 Byte4 Byte5.”
我想:any类型的指针是否是:“累加器2记录的是Byte0和Byte1、BYTE2、BYTE3,而累加器1记录的是Byte4 Byte5Byte6Byte7”
。
/service/answer/Uploads/questionimgs/20111219161842_93.bmp 看了你在找答案里的贴图了,原因如下
图形显示只能说明在调用块时,使用了累加器1储存过DBW6这个地址,你在第一条语句设置断点,此时程序中断,但第一条指令L P##TABEL还没有执行,如果你在第二条语句设置断点,当程序执行到这个断点时,你会发现累加器1的最高字节是87也就是V区(上一层程序的L区),也就是这个指针参数存放的起始地址。
赞同累加器在处理过程中的存储功能,但关于累加器1和累加器2记录指针是完全错误的,累加器存储的是起始地址
游鸿明大侠能讲讲在FC调用过程中,累加器的处理机制么