ਕੰਪਿਊਟਰ ', ਪ੍ਰੋਗਰਾਮਿੰਗ
ਪ੍ਰਸਾਰਕ - ਹੈ, ... ਕੰਪਾਈਲਰ ਦੀ ਕਿਸਮ. ਬਦਲੋ ਅਤੇ ਪ੍ਰਸਾਰਨ ਦੇ ਪ੍ਰੋਗਰਾਮ
ਪ੍ਰੋਗਰਾਮ, ਦੇ ਨਾਲ ਨਾਲ ਲੋਕ ਇਕ ਭਾਸ਼ਾ ਦੂਜੇ ਨੂੰ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਇੱਕ ਦੁਭਾਸ਼ੀਏ ਦੀ ਜ ਅਨੁਵਾਦਕ ਦੀ ਲੋੜ ਹੈ.
ਮੂਲ ਧਾਰਨਾ
ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਗਣਨਾ ਦਾ ਇੱਕ ਭਾਸ਼ਾਈ ਪ੍ਰਤੀਨਿਧੀਤਵ ਕਰਦਾ ਹੈ: i → ਪੀ → ਪੀ (i). ਇੱਕ ਦੁਭਾਸ਼ੀਆ ਇੱਕ ਪ੍ਰੋਗਰਾਮ, ਜੋ ਕਿ ਇੰਪੁੱਟ ਦੇ ਪ੍ਰੋਗਰਾਮ ਪੀ ਅਤੇ ਕੁਝ ਇੰਪੁੱਟ X ਨੂੰ ਸਪਲਾਈ ਹੁੰਦਾ ਹੈ. ਇਹ 'ਤੇ ਪੀ X ਕਰਦਾ ਹੈ: ਮੈਨੂੰ (ਪੀ, x) = ਪੀ (X). ਅਸਲ 'ਸਿਰਫ ਇੱਕ ਹੀ ਅਨੁਵਾਦਕ ਹਰ ਸੰਭਵ ਪ੍ਰੋਗਰਾਮ (ਜਿਸ ਨੂੰ ਰਸਮੀ ਸਿਸਟਮ ਵਿੱਚ ਜਾ ਸਕਦਾ ਹੈ) ਕਰਨ ਦੇ ਸਮਰੱਥ ਹੈ, ਉਥੇ ਹੀ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਬਹੁਤ ਹੀ ਡੂੰਘਾ ਹੈ ਅਤੇ ਮਹੱਤਵਪੂਰਨ ਖੋਜ ਟਿਉਰਿੰਗ ਹੈ.
ਪਰੋਸੈੱਸਰ ਮਸ਼ੀਨ ਭਾਸ਼ਾ ਵਿਚ ਪ੍ਰੋਗਰਾਮ ਦਾ ਇੱਕ ਅਨੁਵਾਦਕ ਹੈ. ਆਮ ਤੌਰ 'ਤੇ ਨੂੰ ਵੀ, ਉੱਚ-ਪੱਧਰ ਦੇ ਭਾਸ਼ਾ ਲਈ ਦੁਭਾਸ਼ੀਏ ਲਿਖਣ ਲਈ ਇਸ ਲਈ ਉਹ ਇੱਕ ਫਾਰਮ ਵਿਆਖਿਆ ਕਰਨ ਲਈ ਸੌਖਾ ਹੈ, ਜੋ ਕਿ ਵਿੱਚ ਅਨੁਵਾਦ ਮਹਿੰਗਾ.
ਅਨੁਵਾਦਕ ਦੇ ਕੁਝ ਕਿਸਮ ਦੇ ਬਹੁਤ ਹੀ ਅਜੀਬ ਦੇ ਨਾਮ ਹੈ:
- assembler ਮਸ਼ੀਨ ਭਾਸ਼ਾ ਵਿੱਚ ਵਿਧਾਨ ਸਭਾ ਭਾਸ਼ਾ ਪ੍ਰੋਗਰਾਮ ਅਨੁਵਾਦ.
- ਕੰਪਾਈਲਰ ਇੱਕ ਛੋਟੇ ਭਾਸ਼ਾ ਲਈ ਇੱਕ ਉੱਚ-ਪੱਧਰ ਦੀ ਭਾਸ਼ਾ ਦਾ ਅਨੁਵਾਦ.
ਪੀ → X ਨੂੰ → ਜਦ ਮ ਹੈ, ∀x: - ਪ੍ਰਸਾਰਕ ਇੱਕ ਪ੍ਰੋਗਰਾਮ, ਜੋ ਕਿ ਇੰਪੁੱਟ ਡਾਟਾ ਦੇ ਤੌਰ ਤੇ ਅਜਿਹੇ ਇੱਕ ਢੰਗ ਦੇ ਉਹ ਦੋਨੋ ਇੱਕੋ ਹੀ Semantics ਹੈ, ਜੋ ਕਿ ਵਿਚ ਕੁਝ ਭਾਸ਼ਾ S ਵਿੱਚ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਕਰਦਾ ਹੈ ਅਤੇ ਟੀ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਪੈਦਾ ਕਰਦਾ ਹੈ. ਪੀ (x) = ਸ (X).
ਜੇ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ interpretable ਵਿੱਚ, ਸਾਰੇ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਪ੍ਰਸਾਰਿਤ ਹੈ, ਇਸ ਨੂੰ ਅੱਗੇ ਚੱਲਣ, ਜ AOT ਸੰਕਲਨ ਸੰਕਲਨ ਕਿਹਾ ਗਿਆ ਹੈ. AOT ਕੰਪਾਈਲਰ ਦੀ ਲੜੀ ਵਿੱਚ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸ ਦੇ ਬਾਅਦ ਅਕਸਰ assembler, ਉਦਾਹਰਨ ਲਈ ਹੈ:
ਸਰੋਤ ਕੋਡ ਕੰਪਾਈਲਰ → (ਅਨੁਵਾਦਕ) → → ਵਿਧਾਨ ਕੋਡ ਐਸਮਬਲਰ (ਕੰਪਾਇਲਰ) → → CPU ਨੂੰ ਮਸ਼ੀਨ ਕੋਡ (ਇੰਟਰਪਰੇਟਰ) ਹੈ.
ਅਪਰੇਸ਼ਨਲ ਜ ਡਾਇਨਾਮਿਕ ਸੰਕਲਨ ਵਾਪਰਦੀ ਹੈ, ਜੇਕਰ ਪਰੋਗਰਾਮ, ਪ੍ਰਸਾਰਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਦ ਕਿ ਹੋਰ ਪਿਛਲੀ ਕੰਪਾਇਲ ਹਿੱਸਾ ਦੇ ਕੇ ਚਲਾਇਆ. JIT-ਕੰਪਾਈਲਰ ਨੂੰ ਯਾਦ ਹੈ ਕਿ ਉਹ ਹੀ ਕੀਤਾ ਹੈ, ਇਸ ਲਈ ਦੇ ਰੂਪ ਵਿੱਚ ਦੁਬਾਰਾ ਅਤੇ ਦੁਬਾਰਾ ਸਰੋਤ ਕੋਡ ਨੂੰ ਦੁਹਰਾ ਨਾ ਕਰਨ. ਉਹ ਵੀ ਅਨੁਕੂਲ ਸੰਕਲਨ ਅਤੇ ਕੰਪਾਇਲ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਚੱਲਣ ਵਾਤਾਵਰਨ ਦੇ ਵਿਵਹਾਰ ਦੇ ਆਧਾਰ 'ਤੇ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ.
ਕਈ ਭਾਸ਼ਾ ਕੰਪਾਈਲ ਵਾਰ 'ਤੇ ਕੋਡ ਨੂੰ ਚਲਾਉਣ ਅਤੇ ਰੰਨਟਾਈਮ ਤੇ ਨਵ ਕੋਡ ਨੂੰ ਕੰਪਾਇਲ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ.
ਅਨੁਵਾਦ ਪੜਾਅ
ਬਰਾਡਕਾਸਟ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ synthesizing ਦੇ ਕਦਮ ਹਨ:
ਸਰੋਤ ਕੋਡ ਵਿਸ਼ਲੇਸ਼ਕ → → → ਸੰਕਲਪ ਨੁਮਾਇੰਦਗੀ ਜਰਨੇਟਰ (ਸੰਸਲੇਸ਼ਕ) → ਟੀਚੇ ਦਾ ਕੋਡ.
ਇਹ ਇਸ ਕਾਰਨ ਕਰਕੇ ਹੁੰਦਾ ਹੈ:
- ਕੋਈ ਹੋਰ ਢੰਗ ਦੀ ਠੀਕ ਨਹੀ ਹੈ. ਸ਼ਬਦ ਅਨੁਵਾਦ ਨੂੰ ਸਿਰਫ਼ ਕੰਮ ਨਹੀ ਕਰਦਾ ਹੈ.
- ਚੰਗਾ ਇੰਜੀਨੀਅਰਿੰਗ ਦਾ ਹੱਲ: ਤੁਹਾਨੂੰ ਸਿਰਫ ਐਮ + N ਹੀ ਸਧਾਰਨ ਪ੍ਰੋਗਰਾਮ (polukompilyatorov) ਲਿਖਣ ਦੀ ਲੋੜ ਨੂੰ ਨਿਸ਼ਾਨਾ ਐਮ ਅਤੇ ਐਨ ਸਰੋਤ ਭਾਸ਼ਾ ਦੀ ਬਜਾਏ ਐਮ × ਐਨ ਗੁੰਝਲਦਾਰ ਵੱਧ ਲਈ ਅਨੁਵਾਦਕ (ਅਨੁਵਾਦਕ ਦੀ ਕੁੱਲ) ਲਿਖਣ ਲਈ ਚਾਹੁੰਦੇ ਹੋ.
ਪਰ, ਅਮਲ ਵਿਚ, ਇੱਕ ਬਹੁਤ ਹੀ ਘੱਟ ਹੀ ਕਾਫ਼ੀ ਅਰਥਪੂਰਨ ਅਤੇ ਕਾਫ਼ੀ ਸ਼ਕਤੀਸ਼ਾਲੀ ਦੇ ਇੱਕ ਸੰਕਲਪ ਝਲਕ ਹਰ ਸਰੋਤ ਅਤੇ ਟੀਚੇ ਨੂੰ ਭਾਸ਼ਾ ਨੂੰ ਕਵਰ ਕਰਨ ਲਈ. ਕੁਝ ਇਸ ਦੇ ਨੇੜੇ ਆ ਸਕਦੇ ਸਨ, ਜਦਕਿ.
ਰੀਅਲ ਕੰਪਾਈਲਰ ਬਹੁਤ ਸਾਰੇ ਪੜਾਅ ਦੁਆਰਾ ਪਾਸ. ਜਦ ਆਪਣੇ ਹੀ ਕੰਪਾਈਲਰ ਬਣਾਉਣ ਸਾਰੇ ਮਿਹਨਤ ਦੇ ਕੰਮ ਹੈ ਕਿ ਲੋਕ ਵਰਣਨ ਹੈ ਅਤੇ ਜਰਨੇਟਰ ਨੂੰ ਬਣਾਉਣ ਲਈ ਕੀਤਾ ਹੈ ਦੁਹਰਾਉਣ ਦੀ ਲੋੜ ਨਹੀ ਹੈ. ਤੁਹਾਨੂੰ JavaScript ਨੂੰ ਜ C ਵਿੱਚ ਸਿੱਧੇ ਹੀ ਆਪਣੀ ਭਾਸ਼ਾ ਦਾ ਅਨੁਵਾਦ ਅਤੇ ਮੌਜੂਦਾ ਜਾਵਾਸਕ੍ਰਿਪਟ-ਇੰਜਣ ਅਤੇ C ਕੰਪਾਈਲਰ ਬਾਕੀ ਕੀ ਕਰਨ ਦੀ ਦਾ ਫਾਇਦਾ ਲੈ ਸਕਦੇ ਹਨ. ਤੁਹਾਨੂੰ ਇਹ ਵੀ ਮੌਜੂਦਾ ਵਿਚਕਾਰਲੇ ਨੁਮਾਇੰਦਗੀ ਅਤੇ ਇਸਤੇਮਾਲ ਕਰ ਸਕਦੇ ਹੋ ਵਰਚੁਅਲ ਮਸ਼ੀਨ.
ਰਿਕਾਰਡ ਨੂੰ ਅਨੁਵਾਦਕ
ਸਰੋਤ, ਮੰਜ਼ਿਲ ਹੈ ਅਤੇ ਆਧਾਰ: - ਪ੍ਰਸਾਰਕ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਜ ਹਾਰਡਵੇਅਰ ਹੈ, ਜੋ ਕਿ ਤਿੰਨ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਹੈ. ਉਹ ਇੱਕ ਟੀ-ਸ਼ਕਲ ਵਿੱਚ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਹੇਠ ਅਸਲੀ ਖੱਬੇ, ਸੱਜੇ ਅਤੇ ਟਾਰਗਿਟ ਦਾ ਅਧਾਰ ਰੱਖਣ.
ਉੱਥੇ ਕੰਪਾਈਲਰ ਦੇ ਤਿੰਨ ਕਿਸਮ ਦੇ ਹੁੰਦੇ ਹਨ:
- ਪ੍ਰਸਾਰਕ - ਜੇ ਇਹ ਬੁਨਿਆਦੀ ਸਰੋਤ ਭਾਸ਼ਾ ਨਾਲ ਸੰਬੰਧਿਤ samokompilyator ਹੈ.
- ਕੰਪਾਈਲਰ ਹੈ, ਜੋ ਕਿ ਭਾਸ਼ਾ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬੇਸਲਾਈਨ, samorezidentnym ਕਹਿੰਦੇ ਹੈ.
- ਅਤੇ ਇੱਕ ਅੰਤਰ-ਕੰਪਾਈਲਰ, ਜੇਕਰ ਉਹ ਨਿਸ਼ਾਨਾ ਬੁਨਿਆਦੀ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾ - ਪ੍ਰਸਾਰਕ.
ਇਹ ਜ਼ਰੂਰੀ ਹੈ?
ਵੀ ਤੁਹਾਨੂੰ ਕਦੇ ਵੀ ਹੈ, ਕਿਉਕਿ ਇਸ ਮਕਸਦ ਲਈ ਵਰਤਿਆ ਸੰਕਲਪ, ਉਦਾਹਰਨ ਲਈ, ਵਿਆਪਕ ਵਰਤਿਆ ਜਾਦਾ ਹੈ, ਇੱਕ ਅਸਲੀ ਕੰਪਾਈਲਰ, ਇਸ ਦੇ ਰਚਨਾ ਦੀ ਤਕਨਾਲੋਜੀ ਦੀ ਇੱਕ ਚੰਗਾ ਗਿਆਨ ਕਰ, ਜੇ:
- ਫਾਰਮਿਟ ਨੂੰ ਪਾਠ;
- ਭਾਸ਼ਾ ਸਵਾਲ ਡਾਟਾਬੇਸ ਨੂੰ;
- ਤਕਨੀਕੀ ਕੰਪਿਊਟਰ ਆਰਕੀਟੈਕਚਰ;
- ਆਮ ਅਨੁਕੂਲਤਾ ਸਮੱਸਿਆ;
- GUI ਦੇ;
- ਸਕਰਿਪਟਿੰਗ ਭਾਸ਼ਾ;
- ਕੰਟਰੋਲਰ;
- ਵਰਚੁਅਲ ਮਸ਼ੀਨ;
- ਮਸ਼ੀਨ ਅਨੁਵਾਦ.
ਇਸ ਦੇ ਨਾਲ, ਜੇਕਰ ਤੁਹਾਨੂੰ preprocessors, linkers, ਲੋਡਰ, ਡੀਬੱਗਰ ਅਤੇ ਪਰੋਫਾਇਲਰ ਲਿਖਣ ਲਈ ਚਾਹੁੰਦੇ ਹੋ, ਤੁਹਾਨੂੰ ਇੱਕ ਕੰਪਾਇਲਰ ਲਿਖਣ ਦੇ ਤੌਰ ਤੇ ਹੀ ਕਦਮ ਲੰਘਣਾ ਚਾਹੀਦਾ ਹੈ.
ਤੁਹਾਨੂੰ ਇਹ ਵੀ ਸਿੱਖ ਸਕਦੇ ਬਿਹਤਰ ਪ੍ਰੋਗਰਾਮ ਲਿਖਣ ਲਈ, ਭਾਸ਼ਾ ਲਈ ਅਨੁਵਾਦਕ ਦੀ ਰਚਨਾ ਇਸ ਜਟਿਲਤਾ ਅਤੇ ambiguities ਦੀ ਬਿਹਤਰ ਸਮਝ ਦਾ ਮਤਲਬ ਹੈ, ਕਿਉਕਿ. ਪ੍ਰਸਾਰਣ ਦੇ ਜਨਰਲ ਅਸੂਲ ਦਾ ਅਧਿਐਨ ਵੀ ਤੁਹਾਨੂੰ ਇੱਕ ਚੰਗਾ ਡਿਜ਼ਾਇਨਰ ਭਾਸ਼ਾ ਬਣ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ. ਇਸ ਲਈ ਇਸ ਨੂੰ ਕੋਈ ਫ਼ਰਕ ਕਰਦਾ ਹੈ ਢਲਵੀ ਭਾਸ਼ਾ ਜੇ ਇਸ ਨੂੰ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ?
ਵਧੇਰੇ ਤਕਨਾਲੋਜੀ
ਕੰਪਾਈਲਰ ਤਕਨਾਲੋਜੀ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦੇ ਬਹੁਤ ਸਾਰੇ ਵੱਖ-ਵੱਖ ਖੇਤਰ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ:
- ਭਾਸ਼ਾ ਦੀ ਰਸਮੀ ਥਿਊਰੀ: ਵਿਆਕਰਣ, ਪਾਰਸ, computability;
- ਕੰਪਿਊਟਰ ਆਰਕੀਟੈਕਚਰ:. ਹਦਾਇਤ ਨੂੰ ਸੈੱਟ, RISC ਜ CISC, pipelined ਨੂੰ ਕਾਰਵਾਈ ਕੋਰ ਘੜੀ ਚੱਕਰ, ਆਦਿ;
- ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੇ ਸੰਕਲਪ, ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਲੜੀ ਕੰਟਰੋਲ, ਸ਼ਰਤ ਚੱਲਣ, ਪੜਾਅ, ਮਾਰਗ, ਫੰਕਸ਼ਨਲ ਸੜਨ, modularity, ਸਮਕਾਲੀ, ਮੈਟਾ-ਪ੍ਰੋਗਰਾਮਿੰਗ, ਸਕੋਪ, ਲਗਾਤਾਰ ਸਬ-ਕਿਸਮ, ਖਾਕੇ, ਆਉਟਪੁੱਟ ਕਿਸਮ, ਪ੍ਰੋਟੋਟਾਇਪ, ਵਿਆਖਿਆ, ਵਹਾਅ, monads, ਬਕਸਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰ, ਜਾਰੀ , ਵਾਈਲਡਕਾਰਡ, ਨਿਯਮਿਤ ਸਮੀਕਰਨ ਲੈਣ-ਮੈਮੋਰੀ, ਵਿਰਾਸਤ ਨੂੰ, polymorphism, ਮੋਡ ਸੈਟਿੰਗ, ਅਤੇ ਇਸ 'ਤੇ ਆਦਿ..
- ਵੱਖਰਾ ਭਾਸ਼ਾ ਹੈ ਅਤੇ ਵਰਚੁਅਲ ਮਸ਼ੀਨ;
- ਐਲਗੋਰਿਥਮ ਅਤੇ ਡਾਟਾ ਬਣਤਰ: ਰੈਗੂਲਰ ਸਮੀਕਰਨ ਵਿੱਚ, ਪਾਰਸ ਐਲਗੋਰਿਥਮ, ਗਰਾਫਿਕਸ ਐਲਗੋਰਿਥਮ, ਗਤੀਸ਼ੀਲ ਪ੍ਰੋਗਰਾਮਿੰਗ, ਸਿਖਲਾਈ;
- ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ: ਸੰਟੈਕਸ, Semantics (ਸਥਿਰ ਅਤੇ ਗਤੀਸ਼ੀਲ), ਸਹਿਯੋਗ ਨੂੰ paradigms (ਸੰਸਥਾਗਤ, ਓਪਨ, ਕੰਮ, ਲਾਜ਼ੀਕਲ, ਸਟੈਕ, parallelism, ਮੈਟਾ-ਪ੍ਰੋਗਰਾਮਿੰਗ);
- ਰਚਨਾ ਨੂੰ ਸਾਫਟਵੇਅਰ (ਕੰਪਾਈਲਰ, ਆਮ ਤੌਰ 'ਤੇ ਵੱਡੇ ਅਤੇ ਗੁੰਝਲਦਾਰ): ਸਥਾਨੀਕਰਨ, ਕੈਸ਼ਿੰਗ, componentize, API ਨੂੰ-ਇੰਟਰਫੇਸ, ਮੁੜ-ਵਰਤਣ, ਸਮਕਾਲੀ.
ਕੰਪਾਈਲਰ ਡਿਜ਼ਾਇਨ
ਅਸਲੀ ਅਨੁਵਾਦਕ ਦੇ ਵਿਕਾਸ 'ਚ ਆਈ ਸਮੱਸਿਆ ਦੇ ਕੁਝ:
- ਸਰੋਤ ਭਾਸ਼ਾ ਨਾਲ ਸਮੱਸਿਆ. ਇਸ ਨੂੰ ਇਸ ਨੂੰ ਕੰਪਾਇਲ ਕਰਨ ਲਈ ਆਸਾਨ ਹੈ? ਉੱਥੇ ਇੱਕ ਪਰੀਪਰੋਸੈੱਸਰ ਹੈ? ਕਿਸ ਕਿਸਮ ਦੇ ਹੁੰਦੇ ਹਨ? ਉੱਥੇ ਇੱਕ ਲਾਇਬਰੇਰੀ ਹੈ?
- ਕੰਪਾਈਲਰ ਪਾਸ ਗਰੁੱਪ: ਸਿੰਗਲ ਜ ਬਹੁ-ਤਰੀਕੇ ਨਾਲ?
- ਅਨੁਕੂਲਤਾ ਦੀ ਡਿਗਰੀ ਚਾਹੁੰਦਾ ਸੀ. ਘੱਟ ਜ ਕੋਈ ਅਨੁਕੂਲਤਾ ਨਾਲ ਫਾਸਟ ਅਤੇ ਭਰਿਸ਼ਟ ਪ੍ਰਸਾਰਣ ਪ੍ਰੋਗਰਾਮ ਆਮ ਹੋ ਸਕਦਾ ਹੈ. ਵੱਧ-ਅਨੁਕੂਲਤਾ ਕੰਪਾਇਲਰ ਹੌਲੀ ਹੋ ਜਾਵੇਗੀ, ਪਰ ਰੰਨਟਾਈਮ ਤੇ ਬਿਹਤਰ ਕੋਡ ਇਸ ਨੂੰ ਕੀਮਤ ਦਾ ਹੋ ਸਕਦਾ ਹੈ.
- ਗਲਤੀ ਖੋਜ ਦੀ ਲੋੜ ਹੈ ਡਿਗਰੀ. ਨੂੰ ਇੱਕ ਅਨੁਵਾਦਕ ਪਹਿਲੀ ਗਲਤੀ 'ਤੇ ਬੰਦ ਕਰ ਸਕਦਾ ਹੈ? ਜਦ ਇਸ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ? ਕੰਪਾਈਲਰ ਗਲਤੀ 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਦੀ ਕੀ?
- ਸੰਦ ਦੀ ਉਪਲਬਧਤਾ. ਮੂਲ ਭਾਸ਼ਾ ਬਹੁਤ ਹੀ ਛੋਟਾ ਹੈ, ਨਾ ਹੈ, ਜੇ, ਸਕੈਨਰ ਅਤੇ ਜਰਨੇਟਰ ਸਮਤੋਲ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ. ਵੀ ਜਰਨੇਟਰ, ਕੋਡ ਜਰਨੇਟਰ ਹਨ, ਪਰ ਉਹ ਇਸ ਲਈ ਆਮ ਨਹੀ ਹਨ.
- ਟੀਚੇ ਦਾ ਕੋਡ ਦੀ ਕਿਸਮ ਤਿਆਰ ਕਰਨ ਲਈ. ਸ਼ੁੱਧ ਵਧਾਉਣ ਦੀ ਜ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਕੋਡ ਤੱਕ ਚੁਣਿਆ ਜਾ. ਕੀ ਹੁਣੇ ਹੀ ਇੱਕ ਇੰਦਰਾਜ਼ ਹਿੱਸਾ ਹੈ, ਜੋ ਕਿ ਅਜਿਹੇ LLVM, RTL, ਜ JVM ਦੇ ਤੌਰ ਤੇ ਇੱਕ ਪ੍ਰਸਿੱਧ ਵਿਚਕਾਰਲੇ ਨੁਮਾਇੰਦਗੀ ਬਣਾਉਦਾ ਲਿਖ ਦੇ. ਕੀ C ਜ JavaScript ਵਿਚ ਸੋਰਸ ਕੋਡ ਵਿਚ ਅਸਲੀ ਦੀ ਇੱਕ ਅਨੁਵਾਦ ਕਰਦੇ ਹਨ.
- ਟੀਚੇ ਦਾ ਕੋਡ ਦਾ ਫਾਰਮੈਟ ਹੈ. ਤੁਹਾਨੂੰ ਚੋਣ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇੱਕ ਵਿਧਾਨ ਭਾਸ਼ਾ, ਇੱਕ ਪੋਰਟੇਬਲ ਮਸ਼ੀਨ ਕੋਡ, ਮਸ਼ੀਨ ਕੋਡ ਮੈਮੋਰੀ ਚਿੱਤਰ ਨੂੰ.
- Retargeting. ਜਦ ਜਰਨੇਟਰ ਦਾ ਸੈੱਟ ਚੰਗਾ ਹੈ ਕਿ ਇੱਕ ਆਮ ਪ੍ਰਵੇਸ਼ ਹਿੱਸਾ ਹੈ. ਇਸ ਕਾਰਨ ਕਰਕੇ ਇਸ ਨੂੰ ਬਹੁਤ ਸਾਰੇ ਹਿੱਸੇ ਦੇ ਇੰਪੁੱਟ ਲਈ ਇੱਕ ਜਨਰੇਟਰ ਕੋਲ ਕਰਨ ਲਈ ਵਧੀਆ ਹੈ.
ਕੰਪਾਈਲਰ ਆਰਕੀਟੈਕਚਰ: ਭਾਗ
ਇਹ ਕੰਪਾਈਲਰ ਹੈ, ਜੋ ਕਿ ਮੂਲ ਕੋਡ ਬਣਾਉਦੀ ਹੈ (ਜੇ ਆਉਟਪੁੱਟ ਪ੍ਰੋਗਰਾਮ ਨੂੰ C ਜ ਇੱਕ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਵਿਚ ਇਕ ਪ੍ਰੋਗਰਾਮ ਹੈ, ਤੁਹਾਨੂੰ ਨਾ, ਇਸ ਲਈ ਬਹੁਤ ਸਾਰੇ ਪੜਾਅ ਦੀ ਲੋੜ ਹੈ) ਦੇ ਮੁੱਖ ਕੰਮ ਭਾਗ ਹਨ:
- ਇੰਪੁੱਟ ਪ੍ਰੋਗਰਾਮ (ਵਹਾਅ ਅੰਕ) ਸਕੈਨਰ (ਲੈਗਜ਼ੀਕਲ ਐਨਾਲਾਈਜ਼ਰ) ਹੈ, ਜੋ ਕਿ ਇਸ ਨੂੰ ਟੋਕਨ ਦੀ ਇੱਕ ਧਾਰਾ ਵਿੱਚ ਬਦਲ ਵਿੱਚ ਖੁਆਈ ਗਿਆ ਹੈ.
- Parser (ਪੂਰੀ) ਇੱਕ ਵੱਖਰਾ ਸੰਟੈਕਸ ਦੇ ਰੁੱਖ ਦਾ ਨਿਰਮਾਣ.
- ਅਰਥ ਵਿਸ਼ਲੇਸ਼ਕ ਅਰਥ ਜਾਣਕਾਰੀ decomposes ਹੈ ਅਤੇ ਗਲਤੀ ਲਈ ਰੁੱਖ ਨੂੰ ਨੋਡ ਲੱਭੇਗਾ. ਵਾਧੂ ਦਾ ਦਰਜਾ ਪ੍ਰਾਪਤ ਅਤੇ ਸਥਾਪਿਤ ਕੀਤਾ ਲਿੰਕ ਦੇ ਨਾਲ ਵੱਖਰਾ ਸੰਟੈਕਸ ਦੇ ਰੁੱਖ - ਇੱਕ ਨਤੀਜੇ ਦੇ ਤੌਰ ਤੇ, ਉਪਯੋਗਤਾ, ਗਰਾਫ਼ ਬਣਾਇਆ.
- ਇੰਟਰਮੀਡੀਏਟ ਕੋਡ ਜਰਨੇਟਰ, ਇੱਕ ਵਹਾਅ ਗਰਾਫ਼ ਬਣਾਉਦਾ ਹੈ (tuples ਮੁੱਖ ਬਲਾਕ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ).
- ਮਸ਼ੀਨ-ਸੁਤੰਤਰ ਕੋਡ ਆਪਟੀਮਾਈਜ਼ਰ ਲੋਕਲ (ਅਧਾਰ ਯੂਨਿਟ ਦੇ ਅੰਦਰ) ਅਤੇ ਗਲੋਬਲ (ਸਾਰੇ ਬਲਾਕ ਕਰਨ ਲਈ) ਅਨੁਕੂਲਤਾ ਅਸਲ ਵਿੱਚ ਰੂਟੀਨ ਦੇ ਅੰਦਰ ਬਾਕੀ ਕਰਦੀ ਹੈ. ਫ਼ਾਲਤੂ ਕੋਡ ਘਟਦੀ ਹੈ ਅਤੇ ਗਣਨਾ ਨੂੰ ਸੌਖਾ. ਇਸ ਦਾ ਨਤੀਜਾ ਇੱਕ ਤਬਦੀਲ ਵਹਾਅ ਗਰਾਫ਼ ਹੈ.
- ਜੇਨਰੇਟਰ ਨੂੰ ਇੱਕ rectilinear ਪ੍ਰਸਾਰਣ ਕੰਟਰੋਲ ਕੋਡ ਵਿੱਚ ਟੀਚੇ ਦਾ ਕੋਡ ਬੁਨਿਆਦੀ ਬਲਾਕ ਨੂੰ ਬੰਨ੍ਹਣਾ, (ਸੰਭਵ ਬੇਅਸਰ) ਇੱਕ ਇਕਾਈ ਫਾਇਲ assembler ਵਰਚੁਅਲ ਰਜਿਸਟਰ ਬਣਾਉਣ.
- ਮਸ਼ੀਨ-ਨਿਰਭਰ ਆਪਟੀਮਾਈਜ਼ਰ, ਲਿੰਕਰ ਰਜਿਸਟਰ ਵਿਚਕਾਰ ਮੈਮੋਰੀ ਨਿਰਧਾਰਤ ਹੈ ਅਤੇ ਯੋਜਨਾ ਬਣਾ ਟੀਮ ਬਣਾ ਦਿੰਦਾ ਹੈ. ਇਹ pipelining ਦੀ ਇੱਕ ਚੰਗਾ ਇਸਤੇਮਾਲ ਨਾਲ ਇਸ ਨੂੰ ਵਿਧਾਨ ਸਭਾ ਤੇ ਵਿਧਾਨ ਸਭਾ ਦੀ ਭਾਸ਼ਾ ਵਿੱਚ ਤਬਦੀਲੀ ਦੇ ਪ੍ਰੋਗਰਾਮ ਕਰਦਾ ਹੈ.
ਇਸ ਦੇ ਨਾਲ, ਗਲਤੀ ਖੋਜ ਸਬ ਮੈਨੇਜਰ ਅਤੇ ਪ੍ਰਤੀਕ ਟੇਬਲ ਦੀ ਵਰਤੋ.
ਸ਼ਬਦਾਵਲੀ ਵਿਸ਼ਲੇਸ਼ਣ (ਸਕੈਨਿੰਗ)
ਸਕੈਨਰ ਟੋਕਨ, ਨੂੰ ਹਟਾਉਣ ਜਾਦਾ ਹੈ, ਟਿੱਪਣੀ ਹੈ ਅਤੇ ਨੂੰ ਵਧਾਉਣ ਮੈਕਰੋ ਦੀ ਇੱਕ ਧਾਰਾ ਵਿੱਚ ਸਟਰੀਮ ਸਰੋਤ ਅੱਖਰ ਬਦਲਦਾ ਹੈ.
ਸਕੈਨਰ ਅਕਸਰ ਅਜਿਹੇ ਕਿ ਕੀ ਜ ਨਾ ਖਾਤੇ ਵਿੱਚ ਕੇਸ, ਮਾਰਜਿਨ, ਸਤਰ ਅੰਤਰਾਲ ਨੂੰ ਅਤੇ ਸ਼ਾਮਿਲ ਟਿੱਪਣੀ ਨੂੰ ਲੈ ਦੇ ਤੌਰ ਤੇ ਸਮੱਸਿਆ, ਨੂੰ ਆ.
ਗਲਤੀ ਸਕੈਨਿੰਗ ਦੌਰਾਨ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ, ਸ਼ਬਦਾਵਲੀ ਨੂੰ ਬੁਲਾਇਆ ਅਤੇ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:
- ਅੱਖਰ, ਜੋ ਕਿ ਵਰਣਮਾਲਾ ਵਿੱਚ ਨਹੀ ਹਨ;
- ਇੱਕ ਸ਼ਬਦ ਜ ਲਾਈਨ ਵਿੱਚ ਅੱਖਰ ਦੀ ਗਿਣਤੀ ਵੱਧ;
- ਨਾ ਇੱਕ ਬੰਦ ਨਿਸ਼ਾਨ ਜ ਇੱਕ ਸਤਰ ਅਸਲੀ;
- ਟਿੱਪਣੀ ਫਾਇਲ ਦੇ ਅੰਤ.
ਪਾਰਸ (ਪਾਰਸਿੰਗ)
ਪਾਰਸਰ ਇੱਕ ਵੱਖਰਾ ਸੰਟੈਕਸ ਰੁੱਖ ਵਿੱਚ ਟੋਕਨ ਦੀ ਤਰਤੀਬ ਬਦਲਦਾ ਹੈ. ਟਰੀ ਵਿੱਚ ਹਰੇਕ ਨੋਡ ਜਿਸ ਦੇ ਬਹੁਤ ਸਾਰੇ ਆਪਣੇ ਆਪ ਨੂੰ ਦੇ ਰੁੱਖ ਨੋਡ ਹਨ ਨਾਮ ਖੇਤਰ, ਦੇ ਨਾਲ ਇੱਕ ਇਕਾਈ ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲਿਆ ਗਿਆ ਹੈ. ਇਸ ਪੜਾਅ 'ਤੇ ਕੋਈ ਵੀ ਚੱਕਰ ਹਨ. ਜਦ ਤੁਹਾਨੂੰ ਬਣਾਉਣ ਲਈ ਇੱਕ ਪੂਰੀ ਵਿਆਕਰਣ (LL ਜ LR) ਉੱਪਰ ਦੀ ਗੁੰਝਲਤਾ ਨੂੰ ਦੇ ਪੱਧਰ ਨੂੰ ਧਿਆਨ ਦੇਣਾ ਹੈ ਅਤੇ ਬਾਹਰ ਕੀ ਕੋਈ ਵੀ ਨਿਯਮ ਸਪੱਸ਼ਟਤਾ ਹਨ ਦਾ ਪਤਾ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ. ਕੁਝ ਭਾਸ਼ਾ ਅਰਥ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੈ.
ਇਸ ਪੜਾਅ 'ਤੇ ਪਤਾ ਲੱਗਿਆ ਹੈ ਗਲਤੀ ਸੰਟੈਕਸ ਕਹਿੰਦੇ ਹਨ. ਉਦਾਹਰਨ ਲਈ:
- k = 5 * (7 - y;
- ਜੰਮੂ = / 5;
- 56 = X * 4.
ਅਰਥ ਵਿਸ਼ਲੇਸ਼ਣ
ਦੌਰਾਨ ਅਰਥ ਵਿਸ਼ਲੇਸ਼ਣ ਨਿਯਮ ਅਤੇ ਪਾਰਸ ਦੇ ਰੁੱਖ ਦੇ ਐਸੋਸੀਏਟ ਹਿੱਸੇ ਦੇ permissibility ਨੂੰ ਚੈੱਕ ਕਰਨ ਲਈ (ਪੂਰਾ ਕਿਸਮ ਦੀ ਪਰਿਵਰਤਨ ਦੇ ਲਈ ਓਪਰੇਸ਼ਨ ਨੂੰ ਪਾਉਣ ਦਾ ਹਵਾਲਾ ਦੇ ਨਾਮ, ਜਿਸ ਨਾਲ, ਅਤੇ ਇਸ 'ਤੇ. ਡੀ) ਅਰਥ ਗਰਾਫ਼ ਬਣਾ ਲਈ.
ਸਪੱਸ਼ਟ ਹੈ, ਵੱਖ ਵੱਖ ਭਾਸ਼ਾ ਵੱਖ-ਵੱਖ ਵਿਚ ਨਿਯਮ ਦੇ ਦਾਖ਼ਲੇ ਦਾ ਸੈੱਟ. ਜੇਕਰ ਤੁਹਾਨੂੰ ਜਾਵਾ ਵਰਗੇ ਭਾਸ਼ਾ ਨੂੰ ਕੰਪਾਇਲ, ਜੇ, ਕੰਪਾਈਲਰ ਲੱਭ ਸਕਦੇ ਹੋ:
- ਇਸ ਦੇ ਸਕੋਪ ਵਿੱਚ ਕਈ ਵੇਰੀਏਬਲ ਐਲਾਨ;
- ਇਸ ਦੇ ਐਲਾਨ ਦੇ ਅੱਗੇ ਇੱਕ ਵੇਰੀਏਬਲ ਨੂੰ ਕਰਨ ਲਈ ਇੱਕ ਹਵਾਲਾ;
- undeclared ਦੇ ਨਾਮ ਦਾ ਜ਼ਿਕਰ;
- ਹਟਾ ਦੇ ਹੱਕ ਦੀ ਉਲੰਘਣਾ;
- ਇੱਕ ਢੰਗ ਕਾਲ ਵਿਚ ਬਹਿਸ ਦੀ ਬਹੁਤ ਜ਼ਿਆਦਾ ਜ ਜਗ ਨੰਬਰ;
- ਟਾਈਪ ਮਿਲਦੀ.
ਪੀੜ੍ਹੀ
ਇੰਟਰਮੀਡੀਏਟ ਕੋਡ ਪੀੜ੍ਹੀ tuples ਦੀ ਬਣੀ ਵਹਾਅ ਗ੍ਰਾਫ, ਬੁਨਿਆਦੀ ਬਲਾਕ ਵਿੱਚ ਵੰਡਿਆ ਪੈਦਾ ਕਰਦੀ ਹੈ.
ਕੋਡ ਪੀੜ੍ਹੀ ਇੱਕ ਅਸਲੀ ਮਸ਼ੀਨ ਕੋਡ ਦਿੰਦਾ ਹੈ. ਪਹਿਲਾ ਕਦਮ 'ਤੇ RISC-ਮਸ਼ੀਨ ਲਈ ਰਵਾਇਤੀ ਕੰਪਾਈਲਰ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਵਰਚੁਅਲ ਰਜਿਸਟਰ ਦਾ ਇੱਕ ਅਨੰਤ ਗਿਣਤੀ ਨੂੰ ਨਾਲ ਇੱਕ assembler ਬਣਾਉਣ. CISC-ਮਸ਼ੀਨ ਲਈ ਸੰਭਵ ਹੈ ਕਿ ਨਾ ਵਾਪਰੇ.
Similar articles
Trending Now