เจเฉฐเจชเจพเจเจฒเจฐ เจฆเจพ เจตเจฟเจเจพเจธ เจเจฐเจจเจพ เจฌเจนเฉเจค เจเจเจพ เจเฉฐเจฎ เจนเฉเฅค เจชเจฐ, เจเฉเจธเจผเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, LLVM เจตเจฐเจเฉ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฆเฉ เจตเจฟเจเจพเจธ เจฆเฉ เจจเจพเจฒ, เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจฆเฉ เจนเฉฑเจฒ เจจเฉเฉฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ, เจเฉ เจเจฟ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ เจจเฉเฉฐ เจเฉฑเจ เจจเจตเฉเจ เจญเจพเจธเจผเจพ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเฉ C เจฆเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ เจจเฉเฉเฉ เจนเฉเฅค LLVM เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจเจธ เจคเฉฑเจฅ เจฆเฉเจเจฐเจพ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉ เจเจฟ เจเจน เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจเฉเจก เจฆเฉ เจเฉฑเจ เจตเฉฑเจกเฉ เจฎเจพเจคเจฐเจพ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉ, เจเฉ เจเจฟ เจฌเจนเฉเจค เจเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจจเจพเจฒ เจฒเฉเจธ เจนเฉเฅค เจเจธ เจเจฎเฉ เจจเฉเฉฐ เจ เฉเจ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจ เจฒเจ, เจธเจฎเฉฑเจเจฐเฉ เจฆเจพ เจฒเฉเจเจ, เจเจฟเจธเจฆเจพ เจ
เจจเฉเจตเจพเจฆ เจ
เจธเฉเจ เจ
เฉฑเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐ เจฐเจนเฉ เจนเจพเจ, เจเฉ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจเฉเจก เจฆเฉเจเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเจฟเจเจพเจเจฃ เจเจพ เจฐเจฟเจนเจพ เจนเฉ เจ
เจคเฉ เจเจน เจฆเจฟเจเจพเจเจฃ เจเจพ เจฐเจฟเจนเจพ เจนเฉ เจเจฟ เจเจนเจจเจพเจ เจฆเจพ เจชเจนเจฟเจฒเฉ เจตเจพเจฐ เจ
เจจเฉเจตเจพเจฆ เจเจฟเจตเฉเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค
เจชเจนเจฟเจฒเฉ เจเจฆเจพเจนเจฐเจจ
เจชเจนเจฟเจฒเจพ เจซเฉฐเจเจธเจผเจจ เจเฉ เจฎเฉเจ เจเฉฑเจฅเฉ เจฆเฉเจเจฃ เจเจพ เจฐเจฟเจนเจพ เจนเจพเจ เจจเฉฐเจฌเจฐ เจเฉเฉเจจ เจฒเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจตเจฟเจงเฉ เจนเฉ:
func myAdd(a, b int) int{
return a + b
}
เจเจน เจซเฉฐเจเจธเจผเจจ เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉ, เจ เจคเฉ, เจธเจผเจพเจเจฆ, เจเฉเจ เจตเฉ เจธเฉเจเจพ เจจเจนเฉเจ เจนเฉ เจธเจเจฆเจพ. เจเจน เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ Go SSA เจเฉเจก เจตเจฟเฉฑเจ เจ เจจเฉเจตเจพเจฆ เจเจฐเจฆเจพ เจนเฉ:
func myAdd(a int, b int) int:
entry:
t0 = a + b int
return t0
เจเจธ เจฆเฉเจฐเจฟเจธเจผ เจฆเฉ เจจเจพเจฒ, เจกเฉเจเจพ เจเจฟเจธเจฎ เจฆเฉ เจธเฉฐเจเฉเจค เจธเฉฑเจเฉ เจชเจพเจธเฉ เจฐเฉฑเจเฉ เจเจพเจเจฆเฉ เจนเจจ เจ เจคเฉ เจเจผเจฟเจเจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจ เจฃเจกเจฟเฉฑเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค
เจเจน เจเฉเจเฉ เจเจฟเจนเฉ เจเจฆเจพเจนเจฐเจจ เจคเฉเจนเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ SSA เจฆเฉ เจเฉฑเจ เจชเจนเจฟเจฒเฉ เจฆเฉ เจธเจพเจฐ เจจเฉเฉฐ เจฆเฉเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค เจ
เจฐเจฅเจพเจค, เจเจฆเฉเจ เจเฉเจก เจจเฉเฉฐ SSA เจฐเฉเจช เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเฉ เจนเฉ, เจคเจพเจ เจนเจฐเฉเจ เจธเจฎเฉเจเจฐเจจ เจจเฉเฉฐ เจธเจญ เจคเฉเจ เจฎเฉเฉฑเจขเจฒเฉ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฟเจธเจฆเจพ เจเจน เจฌเจฃเจฟเจ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ, เจนเฉเจเจฎ return a + b
, เจ
เจธเจฒ เจตเจฟเฉฑเจ, เจฆเฉ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ: เจฆเฉ เจจเฉฐเจฌเจฐ เจเฉเฉเจจเจพ เจ
เจคเฉ เจจเจคเฉเจเจพ เจตเจพเจชเจธ เจเจฐเจจเจพเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจฎเฉเจฒ เจฌเจฒเจพเจเจพเจ เจจเฉเฉฐ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ; เจเจธ เจเฉเจก เจตเจฟเฉฑเจ เจธเจฟเจฐเจซ เจเฉฑเจ เจฌเจฒเจพเจ เจนเฉ - เจเจเจเจฐเฉ เจฌเจฒเจพเจเฅค เจ เจธเฉเจ เจนเฉเจ เจพเจ เจฌเจฒเจพเจเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค
Go SSA เจเฉเจก เจเจธเจพเจจเฉ เจจเจพเจฒ LLVM IR เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเจพ เจนเฉ:
define i64 @myAdd(i64 %a, i64 %b) {
entry:
%0 = add i64 %a, %b
ret i64 %0
}
เจคเฉเจธเฉเจ เจเฉ เจจเฉเจเจฟเจธ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเจน เจเจน เจนเฉ เจเจฟ เจนเจพเจฒเจพเจเจเจฟ เจเฉฑเจฅเฉ เจตเฉฑเจ-เจตเฉฑเจ เจธเจฟเฉฐเจเฉเจเจเจฟเจ เจขเจพเจเจเฉ เจตเจฐเจคเฉ เจเจ เจนเจจ, เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจฌเจฃเจคเจฐ เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจจเจนเฉเจ เจนเฉเฅค LLVM IR เจเฉเจก Go SSA เจเฉเจก เจจเจพเจฒเฉเจ เจฅเฉเฉเจพ เจฎเจเจผเจฌเฉเจค โโเจนเฉ, C เจฆเฉ เจธเจฎเจพเจจ เจนเฉเฅค เจเฉฑเจฅเฉ, เจซเฉฐเจเจธเจผเจจ เจเฉเจธเจผเจฃเจพ เจตเจฟเฉฑเจ, เจชเจนเจฟเจฒเจพเจ เจเจธ เจกเฉเจเจพ เจเจฟเจธเจฎ เจฆเจพ เจตเจฐเจฃเจจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเฉ เจเจน เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ, เจเจฐเจเฉเจฎเฉเจเจ เจจเจพเจฎ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฐเจเฉเจฎเฉเจเจ เจเจฟเจธเจฎ เจฆเจฐเจธเจพเจ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, IR เจชเจพเจฐเจธเจฟเฉฐเจ เจจเฉเฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจเจฃ เจฒเจ, เจเจฒเฉเจฌเจฒ เจเจเจพเจเจเจ เจฆเฉ เจจเจพเจฎ เจเจฟเฉฐเจจเฉเจน เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเจจ @
, เจ
เจคเฉ เจธเจฅเจพเจจเจ เจจเจพเจตเจพเจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ เจเจฟเฉฐเจจเฉเจน เจนเฉ %
(เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉเจฌเจฒ เจเจเจพเจ เจตเฉ เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ)เฅค
เจเจธ เจเฉเจก เจฌเจพเจฐเฉ เจงเจฟเจเจจ เจฆเฉเจฃ เจตเจพเจฒเฉ เจเฉฑเจฒ เจเจน เจนเฉ เจเจฟ เจเฉ เจฆเฉ เจเจฟเจธเจฎ เจชเฉเจฐเจคเฉเจจเจฟเจงเจคเจพ เจฆเจพ เจซเฉเจธเจฒเจพ int
, เจเจฟเจธ เจจเฉเฉฐ เจเฉฐเจชเจพเจเจฒเจฐ เจ
เจคเฉ เจเฉฐเจชเจพเจเจฒเฉเจธเจผเจจ เจฆเฉ เจเฉเจเฉ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ 32-เจฌเจฟเฉฑเจ เจเจพเจ 64-เจฌเจฟเฉฑเจ เจฎเฉเฉฑเจฒ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจฆเจฐเจธเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฆเฉเจ LLVM IR เจเฉเจก เจคเจฟเจเจฐ เจเจฐเจฆเจพ เจนเฉ เจคเจพเจ เจธเจตเฉเจเจพเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจน เจฌเจนเฉเจค เจธเจพเจฐเฉ เจเจพเจฐเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉ เจเจฟ LLVM IR เจเฉเจก เจจเจนเฉเจ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฒเฉเจ เจธเฉเจเจฆเฉ เจนเจจ, เจชเจฒเฉเจเจซเจพเจฐเจฎ เจธเฉเจคเฉฐเจคเจฐ เจนเฉเฅค เจ
เจเจฟเจนเจพ เจเฉเจก, เจเฉฑเจ เจชเจฒเฉเจเจซเจพเจฐเจฎ เจฒเจ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ, เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจฆเฉเจเฉ เจชเจฒเฉเจเจซเจพเจฐเจฎ เจฒเจ เจฒเจฟเจ เจเจพเจ เจเฉฐเจชเจพเจเจฒ เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ (เจเจฆเฉเจ เจคเฉฑเจ เจคเฉเจธเฉเจ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจขเฉเจเจตเฉเจ เจจเจนเฉเจ เจนเฉเฅค
เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจเจ เจนเฉเจฐ เจฆเจฟเจฒเจเจธเจช เจจเฉเจเจคเจพ เจเจน เจนเฉ เจเจฟ เจเจฟเจธเจฎ i64
เจเฉฑเจ เจนเจธเจคเจพเจเจฐเจฟเจค เจชเฉเจฐเจจ เจ
เฉฐเจ เจจเจนเฉเจ เจนเฉ: เจเจน เจธเฉฐเจเจฟเจ เจฆเฉ เจเจฟเฉฐเจจเฉเจน เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจจเจฟเจฐเจชเฉฑเจ เจนเฉเฅค เจนเจฆเจพเจเจคเจพเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจฟเจเจ, เจเจน เจฆเจธเจคเจเจค เจเฉเจคเฉ เจ
เจคเฉ เจนเจธเจคเจพเจเจฐเจฟเจค เจฆเฉเจตเฉเจ เจจเฉฐเจฌเจฐเจพเจ เจจเฉเฉฐ เจฆเจฐเจธเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเฉเฉ เจเจพเจฐเจตเจพเจ เจฆเฉ เจจเฉเจฎเจพเจเฉฐเจฆเจเฉ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเจธ เจจเจพเจฒ เจเฉเจ เจซเจผเจฐเจ เจจเจนเฉเจ เจชเฉเจเจฆเจพ, เจเจธ เจฒเจ เจนเจธเจคเจพเจเจฐเจฟเจค เจเจพเจ เจนเจธเจคเจพเจเจฐเจฟเจค เจธเฉฐเจเจฟเจเจตเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจตเจฟเฉฑเจ เจเฉเจ เจ
เฉฐเจคเจฐ เจจเจนเฉเจ เจนเฉเฅค เจเฉฑเจฅเฉ เจฎเฉเจ เจเจน เจจเฉเจ เจเจฐเจจเจพ เจเจพเจนเจพเจเจเจพ เจเจฟ C เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ, เจเฉฑเจ เจธเจพเจเจจ เจเฉเจคเฉ เจชเฉเจฐเจจ เจ
เฉฐเจ เจตเฉเจฐเฉเจเจฌเจฒ เจจเฉเฉฐ เจเจตเจฐเจซเจฒเฉ เจเจฐเจจ เจจเจพเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจตเจฟเจตเจนเจพเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจเจธเจฒเจ เจเจฒเฉเจเจ เจซเจฐเฉฐเจเจเจเจก เจเจชเจฐเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจซเจฒเฉเจ เจเฉเฉเจฆเจพ เจนเฉเฅค nsw
(เจเฉเจ เจธเจพเจเจจเจก เจฐเฉเจช เจจเจนเฉเจ), เจเฉ LLVM เจจเฉเฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉ เจเจฟ เจเจน เจเจน เจฎเฉฐเจจ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจเฉเฉ เจเจฆเฉ เจตเฉ เจเจตเจฐเจซเจฒเฉ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพเฅค
เจเจน เจเฉเจ เจ
เจจเฉเจเฉเจฒเจจ เจฒเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฆเฉ เจฎเฉเฉฑเจฒ เจเฉเฉเจจเจพ i16
เจเฉฑเจ 32-เจฌเจฟเฉฑเจ เจชเจฒเฉเจเจซเจพเจฐเจฎ 'เจคเฉ (32-เจฌเจฟเฉฑเจ เจฐเจเจฟเจธเจเจฐเจพเจ เจฆเฉ เจจเจพเจฒ) เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจธเจฆเฉ เจเจฒเจพเจตเจพ, เจธเฉเจฎเจพ เจตเจฟเฉฑเจ เจฌเจฃเฉ เจฐเจนเจฟเจฃ เจฒเจ เจเฉฑเจ เจธเจพเจเจจ เจเจเจธเจชเฉเจเจธเจผเจจ เจเจชเจฐเฉเจธเจผเจจ i16
. เจเจธเจฆเฉ เจเจพเจฐเจจ, เจฎเจธเจผเฉเจจ เจฐเจเจฟเจธเจเจฐ เจฆเฉ เจเจเจพเจฐเจพเจ เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ เจชเฉเจฐเจจ เจ
เฉฐเจ เจเจชเจฐเฉเจธเจผเจจ เจเจฐเจจเจพ เจ
เจเจธเจฐ เจตเจงเฉเจฐเฉ เจเฉเจธเจผเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
เจเจธ IR เจเฉเจก เจจเจพเจฒ เจ เฉฑเจเฉ เจเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจนเฉเจฃ เจธเจพเจกเฉ เจฒเจ เจเฉเจ เจเจพเจธ เจฆเจฟเจฒเจเจธเจชเฉ เจจเจนเฉเจ เจนเฉเฅค เจเฉเจก เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ (เจชเจฐ เจธเจพเจกเฉ เจตเจฐเจเฉ เจธเจงเจพเจฐเจจ เจเจฆเจพเจนเจฐเจฃ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเฉเจ เจตเฉ เจ เจจเฉเจเฉเจฒเจฟเจค เจจเจนเฉเจ เจนเฉ) เจ เจคเฉ เจซเจฟเจฐ เจฎเจธเจผเฉเจจ เจเฉเจก เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจฆเฉเจเฉ เจเจฆเจพเจนเจฐเจจ
เจ เจเจฒเฉ เจเจฆเจพเจนเจฐเจจ เจเฉ เจ เจธเฉเจ เจฆเฉเจเจพเจเจเฉ เจเจน เจฅเฉเฉเฉ เจนเฉเจฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉเจตเฉเจเฉเฅค เจ เจฐเจฅเจพเจค, เจ เจธเฉเจ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจ เจเฉ เจชเฉเจฐเจจ เจ เฉฐเจเจพเจ เจฆเฉ เจเฉฑเจ เจเฉเจเฉเฉ เจจเฉเฉฐ เจเฉเฉเจฆเจพ เจนเฉ:
func sum(numbers []int) int {
n := 0
for i := 0; i < len(numbers); i++ {
n += numbers[i]
}
return n
}
เจเจน เจเฉเจก เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ Go SSA เจเฉเจก เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเจพ เจนเฉ:
func sum(numbers []int) int:
entry:
jump for.loop
for.loop:
t0 = phi [entry: 0:int, for.body: t6] #n int
t1 = phi [entry: 0:int, for.body: t7] #i int
t2 = len(numbers) int
t3 = t1 < t2 bool
if t3 goto for.body else for.done
for.body:
t4 = &numbers[t1] *int
t5 = *t4 int
t6 = t0 + t5 int
t7 = t1 + 1:int int
jump for.loop
for.done:
return t0
เจเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ SSA เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจเฉเจก เจฆเฉ เจจเฉเจฎเจพเจเฉฐเจฆเจเฉ เจเจฐเจจ เจฒเจ เจเจพเจธ เจนเฉเจฐ เจเจธเจพเจฐเฉเจเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉเฅค เจธเจผเจพเจเจฆ เจเจธ เจเฉเจก เจฆเฉ เจธเจญ เจคเฉเจ เจธเจชเฉฑเจธเจผเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจเจน เจคเฉฑเจฅ เจนเฉ เจเจฟ เจเฉฑเจฅเฉ เจเฉเจ เจขเจพเจเจเจพเจเจค เจชเฉเจฐเจตเจพเจน เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจเจฎเจพเจเจกเจพเจ เจจเจนเฉเจ เจนเจจเฅค เจเจฃเจจเจพ เจฆเฉ เจชเฉเจฐเจตเจพเจน เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจฒเจ, เจเฉฑเจฅเฉ เจธเจฟเจฐเจซ เจธเจผเจฐเจคเฉเจ เจ เจคเฉ เจฌเจฟเจจเจพเจ เจธเจผเจฐเจค เจเจพเจฒ เจนเจจ, เจ เจคเฉ, เจเฉเจเจฐ เจ เจธเฉเจ เจเจธ เจเจฎเจพเจเจก เจจเฉเฉฐ เจชเฉเจฐเจตเจพเจน เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเจฎเจพเจเจก เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฎเฉฐเจจเจฆเฉ เจนเจพเจ, เจคเจพเจ เจเฉฑเจ เจตเจพเจชเจธเฉ เจเจฎเจพเจเจกเฅค
เจตเจพเจธเจคเจต เจตเจฟเฉฑเจ, เจเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเฉ เจธเจเจฆเฉ เจนเฉ เจเจฟ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจเจฐเจฒเฉ เจฌเจฐเฉเจธ (เจเจฟเจตเฉเจ เจเจฟ เจญเจพเจธเจผเจพเจตเจพเจ เจฆเฉ C เจชเจฐเจฟเจตเจพเจฐ เจตเจฟเฉฑเจ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจฌเจฒเจพเจเจพเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจจเจนเฉเจ เจเจฟเจ เจนเฉเฅค เจเจน เจฒเฉเจฌเจฒ เจฆเฉเจเจฐเจพ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจนเฉ, เจ
เจธเฉเจเจฌเจฒเฉ เจญเจพเจธเจผเจพเจตเจพเจ เจฆเฉ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเจพ เจนเฉ, เจ
เจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจฌเจฒเจพเจเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค SSA เจตเจฟเฉฑเจ, เจฎเฉเจฒ เจฌเจฒเจพเจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจฒเฉเจฌเจฒ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเจฃ เจตเจพเจฒเฉ เจ
เจคเฉ เจฎเฉเจฒ เจฌเจฒเจพเจ เจธเฉฐเจชเฉเจฐเจจเจคเจพ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจจเจพเจฒ เจเจคเจฎ เจนเฉเจฃ เจตเจพเจฒเฉ เจเฉเจก เจฆเฉ เจ
เจจเฉเจฐเฉเจช เจเฉเจฐเจฎ เจตเจเฉเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ - return
ะธ jump
.
เจเจธ เจเฉเจก เจฆเจพ เจเฉฑเจ เจนเฉเจฐ เจฆเจฟเจฒเจเจธเจช เจตเฉเจฐเจตเจพ เจจเจฟเจฐเจฆเฉเจธเจผ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉ phi
. เจจเจฟเจฐเจฆเฉเจธเจผ เจเจพเจซเจผเฉ เจ
เจธเจงเจพเจฐเจจ เจนเจจ เจ
เจคเฉ เจธเจฎเจเจฃ เจตเจฟเฉฑเจ เจเฉเจ เจธเจฎเจพเจ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉเฅค เจฏเจพเจฆ เจฐเฉฑเจเฉ, เจเจฟ myAdd
เจเฉฑเจชเจฐ เจฆเจฟเจเจพเจเจ เจเจฟเจ เจนเฉ, เจชเจฐ เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจซเฉฐเจเจธเจผเจจเจพเจ เจฒเจ เจขเฉเจเจตเจพเจ เจจเจนเฉเจ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ เจเจธ เจญเจพเจ เจตเจฟเฉฑเจ เจเจฐเจเจพ เจเฉเจคเฉ เจเจ เจซเฉฐเจเจธเจผเจจ sum
. เจเจพเจธ เจคเฉเจฐ 'เจคเฉ, เจฒเฉเจช เจฆเฉ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉเจฐเจพเจจ เจตเฉเจฐเฉเจเจฌเจฒ เจฌเจฆเจฒเจฆเฉ เจนเจจ i
ะธ n
.
SSA เจเฉฑเจ เจ
เจเฉเจคเฉ เจนเจฆเจพเจเจค เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉฑเจ เจตเจพเจฐ เจตเฉเจฐเฉเจเจฌเจฒ เจฎเฉเฉฑเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ 'เจคเฉ เจชเจพเจฌเฉฐเจฆเฉ เจจเฉเฉฐ เจฌเจพเจเจชเจพเจธ เจเจฐเจฆเจพ เจนเฉ phi
(เจเจธเจฆเจพ เจจเจพเจฎ เจฏเฉเจจเจพเจจเฉ เจตเจฐเจฃเจฎเจพเจฒเจพ เจคเฉเจ เจฒเจฟเจ เจเจฟเจ เจนเฉ)เฅค เจคเฉฑเจฅ เจเจน เจนเฉ เจเจฟ เจธเฉ เจตเจฐเจเฉเจเจ เจญเจพเจธเจผเจพเจตเจพเจ เจฒเจ เจเฉเจก เจฆเฉ SSA เจชเฉเจฐเจคเฉเจจเจฟเจงเจคเจพ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจ เจเจพเจฒ เจฆเจพ เจธเจนเจพเจฐเจพ เจฒเฉเจฃเจพ เจชเจตเฉเจเจพเฅค เจเจธ เจนเจฆเจพเจเจค เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจจ เจฆเจพ เจจเจคเฉเจเจพ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเจพ เจฎเฉเจเฉเจฆเจพ เจฎเฉเฉฑเจฒ เจนเฉ (i
เจ n
), เจ
เจคเฉ เจฎเฉเจฒ เจฌเจฒเจพเจเจพเจ เจฆเฉ เจธเฉเจเฉ เจเจธเจฆเฉ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจตเจเฉเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจธ เจนเจฆเจพเจเจค 'เจคเฉ เจเฉเจฐ เจเจฐเฉ:
t0 = phi [entry: 0:int, for.body: t6] #n
เจเจธเจฆเจพ เจ
เจฐเจฅ เจเจธ เจชเฉเจฐเจเจพเจฐ เจนเฉ: เจเฉเจเจฐ เจชเจฟเจเจฒเจพ เจฎเฉเจฒ เจฌเจฒเจพเจ เจเฉฑเจ เจฌเจฒเจพเจ เจธเฉ entry
(เจเจจเจชเฉเจ), เจซเจฟเจฐ t0
เจเฉฑเจ เจธเจฅเจฟเจฐ เจนเฉ 0
, เจ
เจคเฉ เจเฉเจเจฐ เจชเจฟเจเจฒเจพ เจฎเฉเจฒ เจฌเจฒเจพเจ เจธเฉ for.body
, เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจฎเฉเฉฑเจฒ เจฒเฉเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ t6
เจเจธ เจฌเจฒเจพเจ เจคเฉเจ. เจเจน เจธเจญ เจเฉเจ เจเจพเจซเจผเฉ เจฐเจนเฉฑเจธเจฎเจ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉ, เจชเจฐ เจเจน เจตเจฟเจงเฉ เจเจธเจเจธเจ เจจเฉเฉฐ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเฉเฅค เจฎเจจเฉเฉฑเจเฉ เจฆเฉเจฐเจฟเจธเจผเจเฉเจเฉเจฃ เจคเฉเจ, เจเจน เจธเจญ เจเฉเจก เจจเฉเฉฐ เจธเจฎเจเจฃเจพ เจฎเฉเจธเจผเจเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ, เจชเจฐ เจเจน เจคเฉฑเจฅ เจเจฟ เจนเจฐเฉเจ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจตเจพเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจฌเจนเฉเจค เจธเจพเจฐเฉ เจ
เจจเฉเจเฉเจฒเจจ เจจเฉเฉฐ เจฌเจนเฉเจค เจธเฉเจเจพ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
เจจเฉเจ เจเจฐเฉ เจเจฟ เจเฉ เจคเฉเจธเฉเจ เจเจชเจฃเจพ เจเฉฐเจชเจพเจเจฒเจฐ เจฒเจฟเจเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจธ เจเจฟเจธเจฎ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ เจจเจพเจฒ เจจเจเจฟเฉฑเจ เจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจชเจตเฉเจเฉเฅค เจเฉฑเจฅเฉเจ เจคเฉฑเจ เจเจฟ เจเจฒเฉเจเจ เจตเฉ เจเจน เจธเจพเจฐเฉเจเจ เจนเจฆเจพเจเจคเจพเจ เจคเจฟเจเจฐ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ phi
, เจเจน เจเฉฑเจ เจตเจฟเจงเฉ เจตเจฐเจคเจฆเจพ เจนเฉ alloca
(เจเจน เจเจฎ เจฒเฉเจเจฒ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจตเจฐเจเจพ เจนเฉ)เฅค เจซเจฟเจฐ, เจเจฆเฉเจ เจเฉฑเจ LLVM เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจชเจพเจธ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ alloca
SSA เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจเจฟเจเฅค TinyGo, เจนเจพเจฒเจพเจเจเจฟ, Go SSA เจคเฉเจ เจเจจเจชเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเจพ เจนเฉ, เจเฉ เจเจฟ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจคเฉเจฐ 'เจคเฉ, เจชเจนเจฟเจฒเจพเจ เจนเฉ SSA เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจตเจฟเจเจพเจฐ เจ
เจงเฉเจจ เจเฉฐเจเจฐเจฎเฉเจกเฉเจเจ เจเฉเจก เจฆเฉ เจเฉเจเฉเฉ เจฆเฉ เจเฉฑเจ เจนเฉเจฐ เจจเจตเฉเจจเจคเจพ เจเจน เจนเฉ เจเจฟ เจธเฉเจเจเจพเจเจ เจฆเฉเจเจฐเจพ เจเฉเจเฉเฉ เจคเฉฑเจคเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจจเฉเฉฐ เจชเจคเฉ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจ เจฆเฉ เจเฉฑเจ เจเจชเจฐเฉเจธเจผเจจ เจ
เจคเฉ เจจเจคเฉเจเฉ เจตเจพเจฒเฉ เจชเฉเจเจเฉฐเจเจฐ เจจเฉเฉฐ เจกเฉเจฐเฉเจซเจฐเฉเจเจธ เจเจฐเจจ เจฆเฉ เจเจพเจฐเจตเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉเฅค เจเฉฑเจฅเฉ เจคเฉเจธเฉเจ IR เจเฉเจก เจตเจฟเฉฑเจ เจธเจฅเจฟเจฐเจพเจเจเจพเจ เจฆเจพ เจธเจฟเฉฑเจงเจพ เจเฉเฉ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ (เจเจฆเจพเจนเจฐเจจ เจฒเจ - 1:int
). เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจจเจพเจฒ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ myAdd
เจเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค เจนเฉเจฃ เจเจฆเฉเจ เจธเจพเจกเฉ เจเฉเจฒ เจเจน เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจนเจจ, เจคเจพเจ เจเจ เจฆเฉเจเฉเจ เจเจฟ เจเจน เจเฉเจก LLVM IR เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจนเฉเจฃ 'เจคเฉ เจเฉ เจฌเจฃ เจเจพเจเจฆเจพ เจนเฉ:
define i64 @sum(i64* %ptr, i64 %len, i64 %cap) {
entry:
br label %for.loop
for.loop: ; preds = %for.body, %entry
%0 = phi i64 [ 0, %entry ], [ %5, %deref.next ]
%1 = phi i64 [ 0, %entry ], [ %6, %deref.next ]
%2 = icmp slt i64 %1, %len
br i1 %2, label %for.body, label %for.done
for.body: ; preds = %for.loop
%3 = getelementptr i64, i64* %ptr, i64 %1
%4 = load i64, i64* %3
%5 = add i64 %0, %4
%6 = add i64 %1, 1
br label %for.loop
for.done: ; preds = %for.loop
ret i64 %0
}
เจเฉฑเจฅเฉ, เจชเจนเจฟเจฒเจพเจ เจตเจพเจเจ, เจ
เจธเฉเจ เจเจนเฉ เจฌเจฃเจคเจฐ เจฆเฉเจ เจธเจเจฆเฉ เจนเจพเจ, เจเจฟเจธ เจตเจฟเฉฑเจ เจนเฉเจฐ เจธเจฟเฉฐเจเฉเจเจเจฟเจ เจฌเจฃเจคเจฐ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจพเจฒเจพเจ เจตเจฟเฉฑเจ phi
เจฎเฉเฉฑเจฒ เจ
เจคเฉ เจฒเฉเจฌเจฒ เจฌเจฆเจฒเฉ เจเจเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเฉฑเจฅเฉ เจเฉเจ เจ
เจเจฟเจนเจพ เจนเฉ เจเจฟเจธ เจตเฉฑเจฒ เจตเจฟเจธเจผเฉเจธเจผ เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ.
เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ, เจเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจเฉฑเจ เจฌเจฟเจฒเจเฉเจฒ เจตเฉฑเจเจฐเจพ เจซเฉฐเจเจธเจผเจจ เจนเจธเจคเจพเจเจฐ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉเฅค LLVM เจเฉเจเฉเจฟเจเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจ
เจคเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ, เจเฉฑเจ เจ
เจจเฉเจเฉเจฒเจจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ, TinyGo เจเฉฐเจชเจพเจเจฒเจฐ เจเจฟเจธเจจเฉ เจเจธ เจตเจฟเจเจเจพเจฐเจฒเฉ เจเฉเจก เจจเฉเฉฐ เจฌเจฃเจพเจเจ เจนเฉ, เจเจธ เจกเฉเจเจพ เจขเจพเจเจเฉ เจฆเฉ เจตเจฐเจฃเจจ เจจเฉเฉฐ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฆเจพ เจนเฉเฅค เจเจน เจคเจฟเฉฐเจจ เจเฉเจเฉเฉ เจคเฉฑเจคเจพเจ (ptr
, len
ะธ cap
) เจเฉฑเจ เจขเจพเจเจเฉ (เจขเจพเจเจเจพ) เจฆเฉ เจคเฉเจฐ เจคเฉ, เจชเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจคเจฟเฉฐเจจ เจตเฉฑเจเจฐเฉเจเจ เจเจเจพเจเจเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฆเจฐเจธเจพเจเจฃเจพ เจเฉเจ เจ
เจจเฉเจเฉเจฒเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจนเฉเจฐ เจเฉฐเจชเจพเจเจฒเจฐ เจเจพเจฐเจเฉเจ เจชเจฒเฉเจเจซเจพเจฐเจฎ เจฆเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจเจพเจฒเจฟเฉฐเจ เจเจจเจตเฉเจจเจธเจผเจจเจพเจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเฉ เจนเฉเจ, เจธเจฒเจพเจเจธ เจจเฉเฉฐ เจนเฉเจฐ เจคเจฐเฉเจเจฟเจเจ เจจเจพเจฒ เจชเฉเจธเจผ เจเจฐ เจธเจเจฆเฉ เจนเจจเฅค
เจเจธ เจเฉเจก เจฆเฉ เจเจ เจนเฉเจฐ เจฆเจฟเจฒเจเจธเจช เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจนเจฆเจพเจเจค เจฆเฉ เจตเจฐเจคเฉเจ เจนเฉ getelementptr
(เจ
เจเจธเจฐ GEP เจฆเฉ เจคเฉเจฐ เจคเฉ เจธเฉฐเจเฉเจช).
เจเจน เจนเจฆเจพเจเจค เจชเฉเจเจเฉฐเจเจฐเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจเฉฑเจ เจเฉเจเฉเฉ เจคเฉฑเจค เจฒเจ เจชเฉเจเจเฉฐเจเจฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจ เจเจธเจฆเฉ เจคเฉเจฒเจจเจพ C เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเฉเจก เจจเจพเจฒ เจเจฐเฉเจ:
int* sliceptr(int *ptr, int index) {
return &ptr[index];
}
เจเจพเจ เจเจธ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจฆเฉ เจจเจพเจฒ:
int* sliceptr(int *ptr, int index) {
return ptr + index;
}
เจเฉฑเจฅเฉ เจธเจญ เจคเฉเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจเฉฑเจฒ เจเจน เจนเฉ เจเจฟ เจจเจฟเจฐเจฆเฉเจธเจผ getelementptr
เจกเฉเจฐเฉเจซเจฐเฉเจเจธเจฟเฉฐเจ เจเจชเจฐเฉเจธเจผเจจ เจจเจนเฉเจ เจเจฐเจฆเจพเฅค เจเจน เจฎเฉเจเฉเจฆเจพ เจเฉฑเจ เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ เจเฉฑเจ เจจเจตเฉเจ เจชเฉเจเจเฉฐเจเจฐ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจจเฉเฉฐ เจนเจฆเจพเจเจคเจพเจ เจตเจเฉเจ เจฒเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ mul
ะธ add
เจนเจพเจฐเจกเจตเฉเจ
เจฐ เจชเฉฑเจงเจฐ 'เจคเฉ. เจคเฉเจธเฉเจ GEP เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ
เจเจธ เจตเจฟเจเจเจพเจฐเจฒเฉ เจเฉเจก เจฆเฉ เจเจ เจนเฉเจฐ เจฆเจฟเจฒเจเจธเจช เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจนเจฆเจพเจเจค เจฆเฉ เจตเจฐเจคเฉเจ เจนเฉ icmp
. เจเจน เจชเฉเจฐเจจ เจ
เฉฐเจ เจคเฉเจฒเจจเจพเจตเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจฃ เจตเจพเจฒเจพ เจเฉฑเจ เจเจฎ เจเจฆเฉเจธเจผ เจจเจฟเจฐเจฆเฉเจธเจผ เจนเฉเฅค เจเจธ เจนเจฆเจพเจเจค เจฆเจพ เจจเจคเฉเจเจพ เจนเจฎเฉเจธเจผเจพเจ เจเจฟเจธเจฎ เจฆเจพ เจฎเฉเฉฑเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉ i1
- เจฒเจพเจเจผเฉเจเจฒ เจฎเฉเฉฑเจฒ. เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเฉเจตเจฐเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจคเฉเจฒเจจเจพ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ slt
(เจคเฉเจ เจเฉฑเจ เจนเจธเจคเจพเจเจฐ เจเฉเจคเฉ), เจเจฟเจเจเจเจฟ เจ
เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฟเจธเจฎ เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจ เจเจ เจฆเฉ เจจเฉฐเจฌเจฐเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐ เจฐเจนเฉ เจนเจพเจ int
. เจเฉเจเจฐ เจ
เจธเฉเจ เจฆเฉ เจนเจธเจคเจพเจเจฐเจฟเจค เจชเฉเจฐเจจ เจ
เฉฐเจเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐ เจฐเจนเฉ เจธเฉ, เจคเจพเจ เจ
เจธเฉเจ เจตเจฐเจคเจพเจเจเฉ icmp
, เจ
เจคเฉ เจคเฉเจฒเจจเจพ เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพเจฃ เจตเจพเจฒเจพ เจเฉเจตเจฐเจก เจนเฉเจตเฉเจเจพ ult
. เจซเจฒเฉเจเจฟเฉฐเจ เจชเฉเจเจเฉฐเจ เจจเฉฐเจฌเจฐเจพเจ เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจจ เจฒเจ, เจเฉฑเจ เจนเฉเจฐ เจนเจฆเจพเจเจค เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, fcmp
, เจเฉ เจเจฟ เจเจธเฉ เจคเจฐเฉเจนเจพเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค
เจจเจคเฉเจเฉ
เจฎเฉเจฐเจพ เจฎเฉฐเจจเจฃเจพ เจนเฉ เจเจฟ เจเจธ เจธเจฎเฉฑเจเจฐเฉ เจตเจฟเฉฑเจ เจฎเฉเจ LLVM IR เจฆเฉเจเจ เจธเจญ เจคเฉเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจเจตเจฐ เจเฉเจคเจพ เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจเฉฑเจฅเฉ เจนเฉเจฐ เจฌเจนเฉเจค เจเฉเจ เจนเฉ. เจเจพเจธ เจคเฉเจฐ 'เจคเฉ, เจเฉเจก เจฆเฉ เจตเจฟเจเจเจพเจฐเจฒเฉ เจจเฉเจฎเจพเจเฉฐเจฆเจเฉ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจเจจเฉเจเฉเจธเจผเจจเจพเจ เจธเจผเจพเจฎเจฒ เจนเฉ เจธเจเจฆเฉเจเจ เจนเจจ เจเฉ เจ
เจจเฉเจเฉเจฒเจจ เจชเจพเจธเจพเจ เจจเฉเฉฐ เจเฉฐเจชเจพเจเจฒเจฐ เจจเฉเฉฐ เจเจพเจฃเฉ เจเจพเจเจฆเฉ เจเฉเจก เจฆเฉเจเจ เจเฉเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจ เจเฉ เจเจฟ IR เจตเจฟเฉฑเจ เจชเฉเจฐเจเจ เจจเจนเฉเจ เจเฉเจคเฉเจเจ เจเจพ เจธเจเจฆเฉเจเจ เจนเจจเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจน เจเฉฑเจ เจเฉฐเจกเจพ เจนเฉ inbounds
GEP เจจเจฟเจฐเจฆเฉเจธเจผ, เจเจพเจ เจเฉฐเจกเฉ nsw
ะธ nuw
, เจเจฟเจธ เจจเฉเฉฐ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ add
. เจเจนเฉ เจเฉเจตเจฐเจก เจฒเจ เจเจพเจเจฆเจพ เจนเฉ private
, เจเจชเจเฉเจฎเจพเจเจเจผเจฐ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ เจเจฟ เจเจฟเจธ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจน เจเจฟเฉฐเจจเฉเจนเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจเจธ เจจเฉเฉฐ เจฎเฉเจเฉเจฆเจพ เจธเฉฐเจเจฒเจจ เจเจเจพเจ เจคเฉเจ เจฌเจพเจนเจฐ เจฆเจพ เจนเจตเจพเจฒเจพ เจจเจนเฉเจ เจฆเจฟเฉฑเจคเจพ เจเจพเจตเฉเจเจพเฅค เจเจน เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฆเจฟเจฒเจเจธเจช เจเฉฐเจเจฐเจชเฉเจฐเฉเจธเฉเจธเจฐเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจเจพเจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ เจ
เจฃเจตเจฐเจคเฉเจเจ เจเจฐเจเฉเจฎเฉเจเจเจพเจ เจจเฉเฉฐ เจเจคเจฎ เจเจฐเจจเจพเฅค
เจคเฉเจธเฉเจ LLVM เจฌเจพเจฐเฉ เจนเฉเจฐ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเฉ
เจชเจฟเจเจฐเฉ เจชเจพเจ เจ! เจเฉ เจคเฉเจธเฉเจ LLVM เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจฐเจนเฉ เจนเฉ?
เจธเจฐเฉเจค: www.habr.com