ইউনিভার্সাল মেশিন এমুলেটর প্রয়োগ করুন


13

লক্ষ্যটি হ'ল একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা সংক্ষিপ্ততম কোড সহ আইসিএফপি 2006 থেকে ইউনিভার্সাল মেশিনকে অনুকরণ করে। ইউনিভার্সাল মেশিনটির একটি খুব সাধারণ নির্দেশিকা সেট এখানে ব্যাখ্যা করা আছে । এমুলেটরটি কমান্ড-লাইন আর্গুমেন্ট থেকে একটি ফাইলের নামটি পড়তে হবে এবং ফাইলটিকে প্রোগ্রাম হিসাবে চালাতে হবে, সুতরাং আপনার ভাষাটি কোনওভাবে কমান্ড-লাইন আর্গুমেন্ট এবং স্টিডিন / আউটকে সমর্থন করতে হবে। এমুলেটরকে যুক্তিসঙ্গত সময়ের মধ্যে (দশক নয়) স্যান্ডমার্ক সম্পূর্ণ করতে হবে । এখানে নির্দেশের সংক্ষিপ্ত বিবরণ সেট রয়েছে:

মেশিনটিতে একটি করে 32-বিট স্বাক্ষরযুক্ত পূর্ণসংখ্যার আটটি নিবন্ধ রয়েছে।
মেশিনটিতে 32-বিট স্বাক্ষরযুক্ত ইন্টিজার কোষের অ্যারেগুলির একটি সূচকযুক্ত সেট রয়েছে।
সংক্ষেপে বলতে গেলে, বরাদ্দের নির্দেশনা একটি অস্বচ্ছ 32-বিট ইউিন্ট দেয় যা তৈরি অ্যারেটির হ্যান্ডেল, যা একটি স্ট্যাটিক আকারযুক্ত এবং 32-বিট uint উপাদান ধারণ করে।
0'th অ্যারে প্রোগ্রামটি বোঝায়। এটি শুরুতে একটি বড়-এন্ডিয়ান ফাইল থেকে লোড করা হয়।
একটি নির্দেশ পয়েন্টারও রয়েছে যা 0 অ্যারেতে একটি ঘরকে নির্দেশ করে।
প্রতিটি পদক্ষেপে, নির্দেশকটি সেল থেকে পয়েন্টারটি পয়েন্টারটি নির্দেশ করে পাঠ করা হয় এবং পয়েন্টারটি কিছু করার আগেই সন্নিবেশিত হয়।
4 টি উল্লেখযোগ্য বিট অপকডকে উপস্থাপন করে।
যদি অপকডটি 13 হয়, তবে পরবর্তী 3 বিটগুলি নিবন্ধকে উপস্থাপন করে এবং অন্যান্য 25 টি উল্লিখিত রেজিস্টারে লিখিত নম্বরটি উপস্থাপন করে।
অন্যথায় 9 টি সর্বনিম্ন উল্লেখযোগ্য বিট তিনটি নিবন্ধকে প্রতিনিধিত্ব করে, বলুন, A, B এবং C, যেখানে সিটি 3 টি সর্বনিম্ন উল্লেখযোগ্য বিট দ্বারা প্রতিনিধিত্ব করে।
তারপরে অপকোডের উপর নির্ভর করে নিম্নলিখিতটি ঘটে:
0. A = B যদি না সি == 0
1. এ = বি [সি]
২ এ [বি] = সি
৩.২ = বি + সি
৪.২ = বি * সি
৫. এ = বি / সি
A. এ = ~ (বি এবং সি)
The. এমুলেটরটি প্রস্থান করে
৮. বি = বরাদ্দ (সি)
৯. ডেলোকট (সি)
১০. একটি অক্ষর সি থেকে স্টডআউট আউটপুট
১১. একটি অক্ষর ইনপুট করুন স্টিডিন থেকে সি
12. অ্যারে বি 0 টি অ্যারেতে অনুলিপি করুন এবং পয়েন্টারটি সি তে সেট করুন

X86_64 জিটড অ্যাসেম্বলি ( মজাটি প্রসারিত ()) দিয়ে ব্যবহার করে আমি একটি অযথা জটিল কিন্তু সম্পূর্ণ দ্রুত বাস্তবায়ন (আব) লিখেছি , যা আপনি যদি মেশিনের কিছু দিক ভুল বুঝতে চান তবে আপনাকে অবশ্যই সহায়তা করবে।


এটি কোড-গল্ফ বা জনপ্রিয়তা-প্রতিযোগিতা হওয়া উচিত কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে। তারা একচেটিয়া।
হাওয়ার্ড

@ হওয়ার্ড আমি দেখছি, ধন্যবাদ
এমনিআইপি

যদি আমার ভুল না হয় তবে মেশিনটিকে বিগ এন্ডিয়ান হিসাবে বর্ণনা করা হয়, লিটল এন্ডিয়ান নয়।
হস্তুরকুন

@ হাস্তুরকুন ডি'ও আমি সর্বদা এগুলিকে গোলমাল করি, আমি ভাবতে থাকি বিগ এন্ডিয়ান "দ্য বিগ বাইটে শেষ"
মনিপ

1
@ এমনিপ বিগ এন্ডিয়ান এবং লিটল এন্ডিয়ান গুল্লিভারস ট্র্যাভেলস থেকে ধার করা শর্তাদি। লিলিপুটের ক্ষুদ্র লোকেরা ব্লেফুস্কুর ক্ষুদ্র লোকদের সাথে যুদ্ধে লিপ্ত ছিল, কারণ লিলিপুটিয়ানরা "বিগ এন্ডিয়ানস" ছিলেন যারা বিশ্বাস করেছিলেন যে আপনার প্রথমে একটি সিদ্ধ ডিমের বড় প্রান্তটি খাওয়া উচিত, এবং ব্লেফুসানরা বিপরীতটিকে বিশ্বাস করেছিল। আসল গুলিভারের ট্র্যাভেলসটি জোনাথন সুইফটের একটি গুরুতর উপন্যাস ছিল। রাজনৈতিক ও ধর্মীয় পার্থক্যের বিরুদ্ধে যুদ্ধে যাওয়ার বোকামির বিষয়ে লেখক মন্তব্য করেছিলেন। যুদ্ধে সহায়তা করতে অস্বীকার করার কারণে রাষ্ট্রদ্রোহিতার অভিযোগের পরে গুলিভারকে চলে যেতে বাধ্য করা হয়েছিল।
স্তর নদী সেন্ট

উত্তর:


6

পিএইচপি: 443 416  384 বাইট

<?php @eval(ereg_replace('[U-Z]','$\0',strtr('for(Y=[unpack("N*",join(file($argv[1])))];;A|=0){{W=Y[V=0][++U]
C&&A=B
A=Y[B][C+1]
Y[A][B+1]=C
A=B+C
A=B*C
A=bcdiv(PB),PC))*1
A=~B|~C
die
B=++Z
unset(Y[C])
echo chr(C)
C=fgetc(STDIN);C=ord(C)-(C=="")
Y[0]=Y[B|0];U=C
X[W>>25&7]=W&33554431;}}',['
'=>';}if((W>>28&15)==V++){',A=>'X[W>>6&7]',B=>'X[W>>3&7]',C=>'X[W&7]',P=>'sprintf("%u",'])));

* আবার সংশোধন *। এটি যতটা সম্ভব এখনই এটি পেতে পারি। আমি বর্ণমালার একেবারে প্রান্তে কিছু পরিবর্তনশীল রেখেছি যাতে $ চিহ্নগুলি সন্নিবেশ করানো রেজেক্সটি এসটিডিআইএন ধ্রুবকটিকে নাঙ্গিত করে না, তাই এখানে একটি সামান্য শব্দকোষ রইল:

  • ইউ: নির্দেশিকা নির্দেশক
  • ভি: অপকডের সূচক যা বর্তমানে পরীক্ষা করা হচ্ছে
  • ডাব্লু: বর্তমান নির্দেশ শব্দ
  • এক্স: 8 সাধারণ উদ্দেশ্য নিবন্ধ
  • Y: প্রধান স্মৃতি (প্রতিটি ব্লক 1-ভিত্তিক, যেহেতু unpack()অ্যারেগুলি এভাবেই ফিরে আসে)
  • জেড: পরবর্তী ফ্রি মেমরি ব্লকের আইডি (শেষ পর্যন্ত উপচে পড়বে, তবে স্যান্ডমার্কটি কেবল ~ 92 মিলিয়ন ব্যবহার করে)
  • ক, খ, সি হ'ল অনুমানের মতো বর্তমান নির্দেশের নিবন্ধক

স্বাক্ষরবিহীন বিভাগ হ'ল একটি সূক্ষ্ম উপদ্রব (এটি *1নিশ্চিত করতে প্রয়োজনীয় যে সংখ্যক সঠিক সংখ্যায় ফিরিয়ে দেওয়া হয়েছে) তবে পাটিগণিতের বাকি অংশগুলি A|=0প্রতিটি নির্দেশের পরে 0 ( ) দিয়ে পাটিগণিত রেজিস্টার করে 32-বিট রাখা সহজ ।


আমি এই প্রকল্পটি সত্যই আকর্ষণীয় পেয়েছি তবে চরিত্রের সংখ্যাটি হ্রাস করার চেষ্টা করাকে এটি ধীর এবং অকেজো করে তুলেছে, তাই আমি একটি সাধারণ (গল্ফযুক্ত নয়) জাভা সংস্করণও তৈরি করেছিলাম, যা সারা দিন নেওয়ার পরিবর্তে কয়েক মিনিটের মধ্যে স্যান্ডমার্কটি সম্পূর্ণ করতে পারে:

import java.io.*;
import java.util.HashMap;

public class UniversalMachine {
    public static void main(String[] args) throws IOException {
        if (args.length == 0) {
            System.err.println("Program not specified.");
            System.exit(1);
        }

        int[] program;
        try (RandomAccessFile raf = new RandomAccessFile(args[0], "r")) {
            program = new int[(int)(raf.length() / 4)];
            for (int i = 0; i < program.length; i++) {
                program[i] = raf.readInt();
            }
        }

        HashMap<Integer,int[]> memory = new HashMap<>();
        memory.put(0, program);
        int nextMemKey = 1;

        int[] R = new int[8]; // Registers
        int IP = 0; // Execution Finger (Instruction Pointer)

        loop: for (;;) {
            int ins = program[IP++];
            int op = ins >>> 28;
            if (op == 13) { // Orthography
                int A = (ins >> 25) & 7;
                int num = ins & 0x01FF_FFFF;
                R[A] = num;
            } else {
                final int A = (ins >> 6) & 7;
                final int B = (ins >> 3) & 7;
                final int C = (ins >> 0) & 7;
                switch (op) {
                case 0: // Conditional Move
                    if (R[C] != 0) R[A] = R[B];
                    break;
                case 1: // Array Index
                    R[A] = memory.get(R[B])[R[C]];
                    break;
                case 2: // Array Amendment
                    memory.get(R[A])[R[B]] = R[C];
                    break;
                case 3: // Addition
                    R[A] = R[B] + R[C];
                    break;
                case 4: // Multiplication
                    R[A] = R[B] * R[C];
                    break;
                case 5: // Division
                    R[A] = (int)((R[B] & 0xFFFF_FFFFL) / (R[C] & 0xFFFF_FFFFL));
                    break;
                case 6: // Not-And
                    R[A] = ~(R[B] & R[C]);
                    break;
                case 7: // Halt
                    break loop;
                case 8: // Allocation
                    // note: must use C before setting B, as they may be the same reg
                    memory.put(nextMemKey, new int[R[C]]);
                    R[B] = nextMemKey++;
                    break;
                case 9: // Abandonment
                    memory.remove(R[C]);
                    break;
                case 10: // Output
                    System.out.print((char)R[C]);
                    break;
                case 11: // Input
                    R[C] = System.in.read();
                    break;
                case 12: // Load Program
                    IP = R[C];
                    if (R[B] != 0) {
                        memory.put(0, program = memory.get(R[B]).clone());
                    }
                    break;
                }
            }
        }
    }
}

আমার মনে হয় না আপনাকে বিভাজনের ফলাফলটি 32 বিটের সাথে সামঞ্জস্য করতে হবে কারণ এটি লভ্যাংশের তুলনায় সর্বদা ছোট বা সমান-সমান, যা ইতিমধ্যে সামঞ্জস্য করা হয়েছে
মনিপ

কৌতূহল থেকে দূরে, এটি কি ungolfed মত দেখাচ্ছে?
টিম সেগুইন

@ এমনিপ এখন এটি কিছুটা আলাদাভাবে বিভক্ত করা হয়েছে, তবে বিভাগ সম্পর্কে আমাকে সতর্ক হওয়া দরকার কারণ বিভাগ চলাকালীন এই সংখ্যাটি স্বাক্ষরিত নয়, এবং প্রতিটি মুহুর্তে তারা স্বাক্ষরিত হয়েছে।
বোয়ান

3

পার্ল, 407

দেখে মনে হচ্ছে প্রশ্নটি খুব জটিল বলে মনে হচ্ছে, আসলে এটি খুব সহজ।
আমি এখনও ভীষণ নতুন, যদিও যাইহোক এটি এখানে

open$f,shift;binmode$f;push@{$m[0]},unpack'N',$b while read$f,$b,4;$z=2**32;while(){$o=$m[0][$p++];$a=\$r[$o>>6&7];$b=\$r[$o>>3&7];$c=\$r[$o&7];eval qw,$$a=($$b)if$$c $$a=$m[$$b][$$c] $m[$$a][$$b]=$$c $$a=($$b+$$c)%$z $$a=$$b*$$c%$z $$a=$==$$b/$$c $$a=$$b&$$c^($z-1) exit $$b=scalar@m;$m[$$b]=[] undef$m[$$c] print(chr$$c) $$c=ord(getc) $m[0]=[@{$m[$$b]}]if$$b;$p=$$c $r[$o>>25&7]=$o&33554431,[$o>>28].";";}

এটি সত্যিই ধীর গতিতে চলেছে, সম্ভবত জেআইটিড x86_64 এর চেয়ে 800x কম।
এছাড়াও, আমার এক বন্ধু একটি রেফারেন্স সি প্রয়োগ করেছে


এটি কি রেফারেন্স সি কোডে কোনও সমস্যা ?: if(((Memory[++PC]>>28)&15) == 13) { Registers[(Memory[PC]>>25)&7] = (Memory[PC]&0x01ffffff);নির্দেশটি ক্যাশে করা হয়নি, সুতরাং 13-তে নয় এমন কোনও অপকডগুলি পরবর্তী নির্দেশকে প্রাক-কার্যকর করবে, না?
luser droog

2

সি, 924 838 825 696 646 623

আমি bনির্দেশে মনোনীত রেজিস্টারে একটি "পয়েন্টার" (বাইট-অফসেট) সঞ্চয় করি এবং সেই অ্যারেটি অ্যাক্সেস করার জন্য সিউডোকোডে যেভাবে অ্যারের নকশা করে তা যা ব্যবহার করে (বা বিপরীত হয়ে বরং পয়েন্টার পুনর্গঠন করতে) সেই অ্যারেটি পরে ব্যবহার করতে পারি। এখনও পরীক্ষা প্রোগ্রাম চেষ্টা করা প্রয়োজন ...

সম্পাদনা করুন: মন্তব্য যুক্ত।

সম্পাদনা করুন: স্থির নির্দেশিকা 12. পয়েন্টার পরিবর্তন করুন, মেমরিতে নির্দেশ নয়। সমস্ত মন্তব্য, ইনডেন্ট এবং নিউলাইনগুলি সরানো সহ গণনা।

সম্পাদনা: এটি এখন চলছে বলে মনে হচ্ছে, আমি ফলাফলগুলি সঠিকভাবে ব্যাখ্যা করছি। :) চূড়ান্ত উপলব্ধিটি হ'ল 0 অ্যারেটি হ্যান্ডেল 0 দ্বারা প্রকৃতপক্ষে রেফারেন্স করা হয়েছে , যা অবিরাম নিবন্ধে পাওয়া যেতে পারে। খুব বাঁকানো ছোট্ট একটি যন্ত্র! :)

সম্পাদনা করুন:write পরিবর্তে ডিবাগিং যন্ত্রপাতিটি পুনরায় লিখুন printf.... এখানে ধারণাটি বাগগুলি সরানো । :) সম্পাদনা করুন: putchar() এবং getchar()এটিও কোনও নাম নেই sbrk। এটি এখন কাজ করে এবং বেশ দ্রুত প্রদর্শিত হয়।

#define O(_)*a=*b _*c;B
#define B break;case
#define U unsigned
U*m,r[8],*p,*z,f,x,*a,*b,*c;main(int n,char**v){U char
u[4];z=m=p=sbrk(4);f=n>1?open(v[1],0):0;\
while(read(f,u,4)){*m++=(((((*u<<8)|u[1])<<8)|u[2])<<8)|u[3];sbrk(4);}sbrk(4);\
for(;x=*p++,1;){c=r+(x&7);b=r+((x>>3)&7);a=r+((x>>6)&7);switch(x>>28){case
0:*c?*a=*b:0;B
1:*a=(*b?m+*b:z)[*c];B
2:(*a?m+*a:z)[*b]=*c;B
3:O(+)4:O(*)5:O(/)6:*a=~(*b&*c);B
7:return 0;case
8:*b=1+(U*)sbrk(4*(1+*c))-m;(m+*b)[-1]=*c;B
9:B
10:*u=*c;write(1,u,1);B 
11:read(0,u,1);*c=*u;B
12:*b?memcpy(z=sbrk(4*(m+*b)[-1]),m+*b,4*(m+*b)[-1]):0;p=&z[*c];B
13:a=r+((x>>25)&7);*a=x&0x1ffffff;}}}

কেবল সামান্য-এডিয়ানদের জন্য এখানে একটি 611 অক্ষর সংস্করণ রয়েছে।

#define O(_)*a=*b _*c;B
#define B break;case
#define U unsigned
U*m,r[8],*p,*z,f,x,*a,*b,*c;main(int n,char**v){U char
u[4];z=m=p=sbrk(4);f=n>1?open(v[1],0):0;while(read(f,u,4)){*m++=(((((*u<<8)|u[1])<<8)|u[2])<<8)|u[3];sbrk(4);}sbrk(4);for(;x=*p++,1;){c=r+(x&7);b=r+((x>>3)&7);a=r+((x>>6)&7);switch(x>>28){case
0:*c?*a=*b:0;B
1:*a=(*b?m+*b:z)[*c];B
2:(*a?m+*a:z)[*b]=*c;B
3:O(+)4:O(*)5:O(/)6:*a=~(*b&*c);B
7:return 0;case
8:*b=1+(U*)sbrk(4*(1+*c))-m;(m+*b)[-1]=*c;B
9:B
//10:*u=*c;write(1,u,1);B //generic
10:write(1,c,1);B //little-endian
//11:read(0,u,1);*c=*u;B //generic
11:read(0,c,1);B //little-endian
12:*b?memcpy(z=sbrk(4*(m+*b)[-1]),m+*b,4*(m+*b)[-1]):0;p=&z[*c];B
13:a=r+((x>>25)&7);*a=x&0x1ffffff;}}}

ডিবাগিং যন্ত্রপাতিটির সাথে (বর্ধিত) মন্তব্যযুক্ত এবং ইন্ডেন্ট করা হয়েছে।

//#define DEBUG 1
#include <fcntl.h> // open
#include <signal.h> // signal
#include <stdio.h> // putchar getchar
#include <string.h> // memcpy
#include <sys/types.h> // open
#include <sys/stat.h> // open
#include <unistd.h> // sbrk read
unsigned long r[8],*m,*p,*z,f,x,o,*a,*b,*c; // registers memory pointer zero file working opcode A B C
char alpha[] = "0123456789ABCDEF";
//void S(int x){signal(SIGSEGV,S);sbrk(9);} // autogrow memory while reading program
void writeword(int fd, unsigned long word){
    char buf[8];
    unsigned long m=0xF0000000;
    int off;
    for (off = 28; off >= 0; m>>=4, off-=4) {
        buf[7-(off/4)]=alpha[(word&m)>>off];
    }
    write(fd, buf, 8);
    write(fd, " ", 1);
}
int main(int n,char**v){
#ifdef DEBUG
    int fdlog;
#endif
    unsigned char u[4]; // 4-byte buffer for reading big-endian 32bit words portably
    int cnt;

#ifdef DEBUG
    fdlog = open("sandlog",O_WRONLY|O_CREAT|O_TRUNC, 0777);
#endif
    z=m=p=sbrk(4); // initialize memory and pointer
    //signal(SIGSEGV,S); // invoke autogrowing memory -- no longer needed
    f=n>1?open(v[1],O_RDONLY):0; // open program
    while(read(f,u,4)){ // read 4 bytes
        *m++=(((((*u<<8)|u[1])<<8)|u[2])<<8)|u[3]; // pack 4 bytes into 32bit unsigned in mem
        sbrk(4); // don't snip the end of the program
    }
    sbrk(4);
    for(cnt=0;x=*p++,1;cnt++){ // working = *ptr; ptr+=1
        c=r+(x&7); // interpret C register field
        b=r+((x>>3)&7); // interpret B register field
        a=r+((x>>6)&7); // interpret A register field
#ifdef DEBUG
        {int i;write(fdlog,"{",1);for(i=0;i<8;i++)writeword(fdlog, r[i]);
            write(fdlog,"} ",2);
        }
        write(fdlog, alpha+(x), 1);
        write(fdlog, alpha+(x>>28), 1);
#endif
        switch(o=x>>28){ // interpret opcode
            case 0:
#ifdef DEBUG
                write(fdlog, "if(rX)rX=rX\n", 12);
#endif
                *c?*a=*b:0;
                break; // Conditional Move A=B unless C==0
            case 1:
#ifdef DEBUG
                write(fdlog, "rX=rX[rX]\n", 10);
#endif
                *a=(*b?m+*b:z)[*c];
                break; // Array Index A=B[C]
            case 2:
#ifdef DEBUG
                write(fdlog, "rX[rX]=rX\n", 10);
#endif
                (*a?m+*a:z)[*b]=*c;
                break; // Array Amendment A[B] = C
            case 3:
#ifdef DEBUG
                write(fdlog, "rX=rX+rX\n", 9);
#endif
                *a=*b+*c;
                break; // Addition A = B + C
            case 4:
#ifdef DEBUG
                write(fdlog, "rX=rX*rX\n", 9);
#endif
                *a=*b**c;
                break; // Multiplication A = B * C
            case 5:
#ifdef DEBUG
                write(fdlog, "rX=rX/rX\n", 9);
#endif
                *a=*b/ *c;
                break; // Division A = B / C
            case 6:
#ifdef DEBUG
                write(fdlog, "rX=~(rX&rX)\n", 12);
#endif
                *a=~(*b&*c);
                break; // Not-And A = ~(B & C)
            case 7:
#ifdef DEBUG
                write(fdlog, "halt\n", 5);
#endif
                return 0; // Halt 
            case 8:
#ifdef DEBUG
                write(fdlog, "rX=alloc(rX)\n", 13);
#endif
                *b=1+(unsigned long*)sbrk(4*(1+*c))-m;
                   (m+*b)[-1]=*c;

                   break; // Allocation B = allocate(C)
            case 9:
#ifdef DEBUG
                   write(fdlog, "free(rX)\n", 9);
#endif
                   break; // Abandonment deallocate(C)
            case 10:
#ifdef DEBUG
                   write(fdlog, "output(rX)\n", 11);
#endif
                   //putchar(*c);
                   //*u=u[1]=u[2]=' ';
                   u[3]=(char)*c;
                   write(fileno(stdout), u+3, 1);
                   break; // Output char from C to stdout
            case 11:
#ifdef DEBUG
                   write(fdlog, "rX=input()\n", 11);
#endif
                   //x=getchar();*c=x;
                   read(fileno(stdin), u+3, 1);
                   *c=u[3];
                   break; // Input char from stdin into C
            case 12:
#ifdef DEBUG
                   write(fdlog, "load(rX)[rX]\n", 13);
#endif
                    *b?memcpy(z=sbrk(4*(m+*b)[-1]),m+*b,4*(m+*b)[-1]):0;
                    p=&z[*c];
                    break; // Load Program copy the array B into the 0 array, Ptr=C
            case 13:
#ifdef DEBUG
                    write(fdlog, "rX=X\n", 5);
#endif
                    a=r+((x>>25)&7);*a=x&0x1ffffff; // Orthography REG=immediate-25bit
        }
    }
}

অ্যারে হ্যান্ডলগুলি 100% অস্বচ্ছ। আপনি এটি যেভাবেই পাস করবেন না কেন, অ্যারে অ্যাক্সেস করার সময় প্রোগ্রামটি একই মান ব্যবহার করার কথা। PS আমি কেবল এটি সংকলনের চেষ্টা করেছি, আপনি একটি দম্পতি অন্তর্ভুক্ত মিস করছেন। পিপিএস আপনি কি কখনও এটি সংকলন করেছেন? কি lbreakএবং কিভাবে আপনি unary- করতে *একটিint
mniip

হ্যাঁ. খানিকটা আগ্রহী। :) সাইগউইনে জিসিসি সহ আপডেট করা কোড code
লুসার ড্রোগ 11

@ এমনিপ তাই এটি কেবল অ্যারে 0 যা "নম্বর" দ্বারা মনোনীত?
লুসার droog

এটি কেবল সংকলন করেছে, এটি কেবল 2 টি নির্দেশাবলী স্যান্ডমার্কের বাইরে কার্যকর করে: d000108f c0000030এবং তারপরে প্রস্থান করবে
মনিপ

আমি একটি বাগ ঠিক করেছি। এটি থামার আগে এখন 7 টি নির্দেশাবলী কার্যকর করে।
লুসার ড্র্যাগ 8
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.