Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Euphoria. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 19

Автор W Cat

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ 1, Ссли x являСтся Π°Ρ‚ΠΎΠΌΠΎΠΌ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ 0.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Данная ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² основном, слуТит для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° atom. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Ρ‘ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π΅ являСтся Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π°Ρ‚ΠΎΠΌΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:


atom a

a = 5.99


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:


object line


line = gets(0)

if atom(line) then

puts(SCREEN, "ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°\n")

end if


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

sequence, object, integer, Π°Ρ‚ΠΎΠΌΡ‹ ΠΈ ряды


atom_to_float32


Бинтаксис:

include machine.e

s = atom_to_float32(a1)

ОписаниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π°Ρ‚ΠΎΠΌ Euphoria Π² ряд ΠΈΠ· 4-Ρ… ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π­Ρ‚ΠΈ 4 Π±Π°ΠΉΡ‚Π° содСрТат прСдставлСниС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² 32-Ρ… Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΏΠΎ стандарту IEEE.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Атомы Euphoria ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ числам с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ стандарта IEEE, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡ… ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ числам (16 Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€ ΠΏΡ€ΠΎΡ‚ΠΈΠ² 7). Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ экспонСнт Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ€Π΅ для 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… чисСл, Ρ‡Π΅ΠΌ Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (308 ΠΏΡ€ΠΎΡ‚ΠΈΠ² 38), поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚ΠΎΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слишком большими ΠΈΠ»ΠΈ слишком малСнькими для прСдставлСния ΠΈΡ… Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π’ этом случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½: inf ΠΈΠ»ΠΈ -inf (Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ -Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ atom_to_float64().

ЦСлочислСнныС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


fn = open("numbers.dat", "wb")

puts(fn, atom_to_float32(157.82)) -- запись 4-Ρ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ»


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

atom_to_float64, float32_to_atom


atom_to_float64


Бинтаксис:

include machine.e

s = atom_to_float64(a1)

ОписаниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π°Ρ‚ΠΎΠΌ Euphoria Π² ряд, состоящий ΠΈΠ· 8 ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π­Ρ‚ΠΈ 8 Π±Π°ΠΉΡ‚ΠΎΠ² содСрТат прСдставлСниС числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² 64-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΏΠΎ стандарту IEEE.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

ВсС Π°Ρ‚ΠΎΠΌΡ‹ Euphoria ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΊΠ°ΠΊ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΏΠΎ стандарту IEEE, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ любой Π°Ρ‚ΠΎΠΌ Π² 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±Π΅Π· всяких ΠΏΠΎΡ‚Π΅Ρ€ΡŒ точности.

ЦСлочислСнныС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


fn = open("numbers.dat", "wb")

puts(fn, atom_to_float64(157.82)) -- запись 8 Π±Π°ΠΉΡ‚ΠΎΠ² Π² Ρ„Π°ΠΉΠ»


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

atom_to_float32, float64_to_atom


bits_to_int


Бинтаксис:

include machine.e

a = bits_to_int(s)

ОписаниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ряд, состоящий ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈ Π½ΡƒΠ»Π΅ΠΉ, Π΄Π°ΡŽΡ‰ΠΈΡ… Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС числа, Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ дСсятичноС число. Младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ "Π±ΠΈΡ‚" Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ‡Π»Π΅Π½ΠΎΠΌ ряда, s[1].

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Если вывСсти ряд s Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ‚ΠΎ младшиС Π±ΠΈΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ слСва, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² "инвСрсном" порядкС ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ записи, принятой для многоразрядных чисСл, Π½ΠΎ это соглашСниС ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ индСксы для доступа ΠΊ Π±ΠΈΡ‚Π°ΠΌ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ возрастания вСса Π±ΠΈΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


a = bits_to_int({1,1,1,0,1})

-- a Ρ€Π°Π²Π½ΠΎ 23 (Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ 10111)


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

int_to_bits, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° рядах


bk_color


Бинтаксис:

include graphics.e

bk_color(i)

ОписаниС:

УстанавливаСт Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· 16 стандартных Ρ†Π²Π΅Ρ‚ΠΎΠ². Π’ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… вСсь экран ΠΏΠ΅Ρ€Π΅ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ тСкстовых Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Π»ΡŽΠ±Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½Π° Ρ„ΠΎΠ½Π΅ с Π½ΠΎΠ²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСкстовых Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… для Ρ„ΠΎΠ½Π° доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 8 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ².

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

16 стандартных Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ константы Π² Ρ„Π°ΠΉΠ»Π΅ graphics.e.

Π’ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Ρ†Π²Π΅Ρ‚ 0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ соотвСтствуСт Ρ‡Ρ‘Ρ€Π½ΠΎΠΌΡƒ (BLACK), Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π² Ρ‚ΠΎ самоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ {r,g,b}, Ρ‡Ρ‚ΠΎ ΠΈ Ρ†Π²Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° i.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Π½Π° ΠΊΡ€Π°ΡŽ экрана появляСтся Ρ†Π²Π΅Ρ‚Π½ΠΎΠΉ Π±ΠΎΡ€Π΄ΡŽΡ€. Π’ 256-Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Ρ†Π²Π΅Ρ‚ Π±ΠΎΡ€Π΄ΡŽΡ€Π° соотвСтствуСт 17-ΠΎΠΌΡƒ Ρ†Π²Π΅Ρ‚Ρƒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π±ΠΎΡ€Π΄ΡŽΡ€Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ всСм Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ†Π²Π΅Ρ‚Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ palette().

Π’ тСкстовых Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходный Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°, ΠΊΠΎΠ³Π΄Π° ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° заканчиваСтся, Ρ‚.Π΅. 0 - ЧЁРНЫЙ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ bk_color(0). Если курсор находится Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ строкС экрана, цСлСсообразно Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ остановкой вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапСчатайтС хотя Π±Ρ‹ '\n', ΠΈ этого ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


bk_color(BLACK)


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

text_color, palette


bytes_to_int


Бинтаксис:

include machine.e

a = bytes_to_int(s)

ОписаниС:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ 4-Ρ… элСмСнтный ряд, состоящий ΠΈΠ· Π±Π°ΠΉΡ‚ΠΎΠ², Π² Π°Ρ‚ΠΎΠΌ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ряда s Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² порядкС, прСдусмотрСнном для 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… 386+, Ρ‚.Π΅. младший Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±Π°ΠΉΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ - s[1].

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС, Ρ‡Π΅ΠΌ допускаСт Ρ‚ΠΈΠΏ integer, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚ΠΎΠΌΡƒ.

Ряд s Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ peek() ΠΈΠ· 4-Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ячССк памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


atom int32


int32 = bytes_to_int({37,1,0,0})

-- int32 Ρ€Π°Π²Π½ΠΎ 37 + 256*1 = 293


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

int_to_bytes, bits_to_int, peek, peek4s, peek4u, poke


...

ΠΎΡ‚ C Π΄ΠΎ D


call


Бинтаксис:

call(a)

ОписаниС:

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° машинном языкС, участок памяти с ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся ΠΏΠΎ адрСсу a. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ содСрТимоС всСх рСгистров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС. Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Euphoria Π² этой ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ прСдусмотрСна инструкция RET (#C3).

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ участок памяти для ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ этому адрСсу Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ машинного ΠΊΠΎΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ участки памяти для Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. АдрСса этих Π΄Ρ€ΡƒΠ³ΠΈΡ… участков ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² машинном ΠΊΠΎΠ΄Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

demo\callmach.ex

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

allocate, free, peek, poke, poke4, c_proc, define_c_proc


call_back


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

WIN32, Linux, FreeBSD

Бинтаксис:

include dll.e

a = call_back(i)

ΠΈΠ»ΠΈ

a = call_back({i1, i})

ОписаниС:

Π’Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ адрСс для Euphoria-ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ Π΅Ρ‘ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ (Π½ΠΎΠΌΠ΅Ρ€Ρƒ) i. Π­Ρ‚ΠΎΡ‚ адрСс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ Windows, ΠΈΠ»ΠΈ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π‘ΠΈ (ΠΈΠ· динамичСски ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (.dll) Windows ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (.so) Linux/FreeBSD) ΠΊΠ°ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ "ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ" адрСс для Π²Ρ‹Π·ΠΎΠ²Π° вашСй Euphoria-ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Под Windows Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ i1, Π΄ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Ρ‚Π΅ΠΌ самым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (соглашСниС ΠΎ Ρ„ΠΎΡ€ΠΌΠ΅) Π²Ρ‹Π·ΠΎΠ²Π° Π‘ΠΈ для вашСй ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если i1 записано ΠΊΠ°ΠΊ '+', Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ cdecl. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ примСняСтся Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ stdcall. На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Linux ΠΈ FreeBSD слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (Π±Π΅Π· i1), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Windows, дСйствуСт лишь стандартный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, stdcall.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ "ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ…" ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, сколько Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ всС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Euphoria-функциями (ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ) с числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ 0 Π΄ΠΎ 9. Если ваша ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ расчитана Π½Π° Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° (являлась Π±Ρ‹ фактичСски ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ), просто (скаТСм Ρ‚Π°ΠΊ) Π·Π°Π΄Π°ΠΉΡ‚Π΅ return 0, Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ функция Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Когда ваша ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π°, всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами Π±Π΅Π· Π·Π½Π°ΠΊΠ° (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ), поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² вашСй ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ atom, нСзависимо ΠΎΡ‚ вашСго ТСлания ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ТСсткий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ. Π’Π°ΡˆΠ° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ адрСс ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Euphoria Π² качСствС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ signal() ΠΏΠΎΠ΄ Linux/FreeBSD, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сигнал SIGTERM ΠΈ произвСсти Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСрвСры Web Π²Ρ‹Π΄Π°ΡŽΡ‚ сигнал SIGTERM Ρ‚ΠΎΠΌΡƒ процСссу CGI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ» слишком ΠΌΠ½ΠΎΠ³ΠΎ машинного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Ρƒ событий.

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ соглашСниС cdecl ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰Π°Ρ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с exw. Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° особСнностСй компилятора Watcom C (с Π½ΠΈΠΌ строится exw), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ cdecl нСстандартным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ обходится с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ Ρ‚ΠΈΠΏ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

demo\win32\window.exw, demo\linux\qsort.exu

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

routine_id, platform_r.htm


c_func


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

WIN32, Linux, FreeBSD

Бинтаксис:

x = c_func(i, s)

ОписаниС:

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ машинного ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ/ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Euphoria, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Π½ΠΎΠΌΠ΅Ρ€) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ i. АргумСнт i Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, Π²Ρ‹Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ define_c_func(). АргумСнт s являСтся рядом Π΄Π»ΠΈΠ½Ρ‹ n, содСрТащим значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΄Π΅ n - число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½ΠΎΠΌΠ΅Ρ€ i. Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π²Ρ‹Π΄Π°Π½Π½Ρ‹ΠΉ Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.