编译原理—数组元素翻译

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译原理—数组元素翻译相关的知识,希望对你有一定的参考价值。

编译原理—数组元素翻译

数组A[1…20][1…20]如何翻译?

有如下公式:

可变部分:

w w w为元素大小,整型 i n t int int为4
( . . . ( i 1 ∗ n 2 + i 2 ) ∗ n 3 + i 3 ) . . . . ) ∗ n k + i k ) ∗ w (...(i_1*n_2+i_2)*n_3+i_3)....)*n_k+i_k)*w (...(i1n2+i2)n3+i3)....)nk+ik)w

常量部分:

A − ( . . . ( l o w 1 ∗ n 2 + l o w 2 ) ∗ n 3 + l o w 3 ) . . . ) ∗ n k + l o w k ) ∗ w ) A-(...(low_1*n_2+low_2)*n_3+low_3)...)*n_k+low_k)*w) A(...(low1n2+low2)n3+low3)...)nk+lowk)w)

对于A[1…20][1…20]
l o w 1 = 1 , l o w 2 = 1 h i g h 1 = 20 , h i g h 2 = 20 n 1 = h i g h 1 − l o w 1 + 1 = 20 n 2 = h i g h 2 − l o w 2 + 1 = 20 low_1=1,low_2=1\\\\ high_1=20,high_2=20\\\\ n_1=high_1-low_1+1=20 \\\\n_2=high_2-low_2+1=20 low1=1,low2=1high1=20,high2=20n1=high1low1+1=20n2=high2low2+1=20
所以常量值为
A − ( l o w 1 ∗ n 2 + l o w 2 ) ∗ 4 = A − ( 1 ∗ 20 + 1 ) ∗ 4 = A − 84 A-(low_1*n_2+low_2)*4=A-(1*20+1)*4=A-84 A(low1n2+low2)4=A(120+1)4=A84
可变值为
( i 1 ∗ n 2 + i 2 ) ∗ 4 = ( i ∗ 20 + j ) ∗ 4 = 80 i + 4 j (i_1*n_2+i_2)*4=(i*20+j)*4=80i+4j (i1n2+i2)4=(i20+j)4=80i+4j

以上是关于编译原理—数组元素翻译的主要内容,如果未能解决你的问题,请参考以下文章

读龙书学编译原理 语法翻译...

编译原理概述

编译原理 一

9.4了解编译原理

编译原理123

了解编译原理