Acme-Perl-VM
view release on metacpan or search on metacpan
lib/Acme/Perl/VM/JA.pod view on Meta::CPAN
=encoding utf-8
=head1 NAME
Acme::Perl::VM::JA - Pure Perlã«ããPerl5ä»®æ³ãã·ã³ã®å®è£
(AVPM)
=head1 SYNOPSIS
use Acme::Perl::VM;
run_block{
print "Hello, APVM world!\n";
};
=head1 DESCRIPTION
C<Amce::Perl::VM>(APVM)ã¯Pure Perlã§å®è£
ãããPerl5ã®ä»®æ³ãã·ã³ã§ãã
Perlãã£ã¹ããªãã¥ã¼ã·ã§ã³ã«ã¯ã³ã³ãã¤ã«ãããæ§ææ¨ã«ã¢ã¯ã»ã¹ããããã®ã¢ã¸ã¥ã¼ã«ãç¨æããã¦ããï¼B<B - The Perl Compiler>ã¨å¼ã°ãã¦ãã¾ãã
APVMã¯ãã®Bã¢ã¸ã¥ã¼ã«ãå©ç¨ãã¦æ§ææ¨ãè§£éã»å®è¡ããã¢ã¸ã¥ã¼ã«ã§ãã
ãã®ææ¸ã§ã¯ï¼Perl5ã®ä»®æ³ãã·ã³ã«ã¤ãã¦æ¦èª¬ãã¤ã¤ï¼APVMã¨Perl5å®è£
ã¨ã®å¯¾å¿ã«ã¤ãã¦è§£èª¬ãã¾ãã
=head2 The Perl5 Virtual Machine
Perl5ã®ä»®æ³ãã·ã³ã¯ã¹ã¿ãã¯ãã·ã³ã§ããï¼çµã¿è¾¼ã¿æ¼ç®åããµãã«ã¼ãã³ãªã©ã®æç¶ãã®å¼æ°ã¨æ»ãå¤ãï¼ã¹ã¿ãã¯ãéãã¦ããåããã¾ãã
ãã®ä»®æ³ãã·ã³ã®ãã·ã³ã³ã¼ãã¯opcodeã¨å¼ã°ãï¼ãããã³ã³ãã¤ã«ãããPerlããã°ã©ã ã®æå°åä½ã¨ãªãã¾ããopcodeã¯ããã«ãã¼ã¿ã¨æç¶ããããªããªãã¸ã§ã¯ãã¨ãã¦è¡¨ç¾ããï¼ãã®...
opcodeãªãã¸ã§ã¯ãã¯ä»ã®opcodeãªãã¸ã§ã¯ãã¸ã®ãªã³ã¯ãæã¤æ¨æ§é ãæãã¦ããï¼ãã®opcodeã®æ¨ãæ§ææ¨ã¨å¼ã³ã¾ãããããã£ã¦ï¼Perlããã°ã©ã ãå®è¡ããã¨ããã®ã¯ï¼opcodeãå®è¡ãã¤...
ããã§ã¯ä»¥ä¸ã®Perlã³ã¼ããä¾ã«ã¨ãï¼ããã°ã©ã ã®å®è¡ã追ã£ã¦ããã¾ãï¼
print(10 + 20);
ã¾ãï¼ãã®ã³ã¼ããã³ã³ãã¤ã«ããã¨ï¼ä»¥ä¸ã®ãããªæ§ææ¨ãçæããã¾ãï¼
nextstate # ã¹ãã¼ãã¡ã³ãã®å§ã¾ã
print # 弿°ãªã¹ããå°å
pushmark # å¯å¤é·å¼æ°ã®ããã®ãã¼ã¯
add # å ç®æ¼ç®
const(10) # 宿°[10]
const(20) # 宿°[20]
æ§ææ¨ã¯åãã¼ãããå®è¡ãããã®ã§ï¼ãã®æ§ææ¨ãè§£éããã¨ä»¥ä¸ã®é ã«ãªãã¾ãã
nextstate
pushmark
const(10)
const(20)
add
print
ããããã®opcodeã¯å¿
è¦ã«å¿ãã¦ã¹ã¿ãã¯ãã弿°ãããããï¼æ»ãå¤ãããã·ã¥ãã¾ããopcodeã®å®è¡ã¨ã¹ã¿ãã¯ã®ä¸èº«ãåæã«è¡¨ãã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
nextstate ()
pushmark () # mark = -1 (MARKã«ã¤ãã¦ã¯å¾ã®ã»ã¯ã·ã§ã³ã§è§£èª¬)
const(10) (10) # ã¹ã¿ãã¯ã«å¤ãPUSH
const(20) (10, 20) # ã¹ã¿ãã¯ã«å¤ãPUSH
add (30) # å¤ã2ã¤POPãï¼æ¼ç®çµæãPUSH
( run in 2.379 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )