我找不到使用图形语言的编译器。 [英] I cannot find a compiler that uses a Graphic Language.

查看:88
本文介绍了我找不到使用图形语言的编译器。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已阅读相关帖子,但我没有看到任何答案。

这个帖子是我试图说同样的话。我只是没那么简单。
http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/

我希望微软研究院,会以最简单的形式真正研究数字逻辑门。图形语言包括基本逻辑门,AND,OR,NOT,XOR,NAND和NOR。这段代码代表一个3输入AND门。

DIM X作为MousePointer X
DIM Y作为MousePointer Y
DIMZ作为MouseClickEvent
DIM输出为布尔

输出='假''门逻辑在电路设计中将布尔义为False置为0。假设X是屏幕上的水平像素网格,Y是垂直,左'Z可以在屏幕上的任何地方发生。

如果X> 180和X< 360和Y> 200和Y< 250和Z<> 0 THEN
输出='真'
ELSE
输出='假'
结束如果
如果是电路,X是电压, Y是另一个电压,Z是一个开启或关闭的开关,在180和360伏特之间X的开关设置为1,当Y的电压在200和250伏特之间时,它的开关打开/设置为1的输出。因此,这可以绘制为3输入AND门。由于IF语句非常灵活,我们可以在代码的THEN或ELSE部分之后执行任何操作,因此AND门的输出并不总是等于1。它实际上被发送到一个如果不是一系列指针。在我试图建立的图形计算机语言的逻辑中,你应该能够使用程序的这些部分来生成一个真正的布尔/门逻辑真值表。在任何程序中,所有适用于最少门数的数学运算都适用于代码的这些部分。如果指针转到更多代码,我只会调用Sub Public或Private。
所以,当我说,你实际上可以生成一个无病毒的操作系统,这并不意味着什么时候到达在市场。这意味着在其运行期间,它可以防止自己运行病毒。首先,您必须拥有计算机可以读取的Langauge。其次,您必须派生定义病毒的真值表。如果编译器包含反编译器,并且反编译器只是检查以确保计算机程序是由本机编译器编写的,那么让机器弄清楚程序是否是病毒的问题几乎已经解决了。每个程序都需要用户输入。如果不是,它必须是驱动程序,编解码器,DLL,但没有什么不是通过鼠标单击或击键开始。现在,考虑一下病毒,它通常更像是一个不关注用户的TSR。视频游戏总是引起注意,输入通常是操纵杆或其他,声音或视频。任何二进制文件都被视为二进制文件,只有数据。在反编译器检查之前,操作系统必须等待执行程序。这就是为什么操作系统需要在编译器之后进行设计的原因。
我可以编写最后一段代码的方法有很多种。但是,在汇编语言中,编写代码的方式永远不会包含IF语句。 X,Y,Z和输出都将被赋值为变量。将其保持在ALU周围,大于>和小于<将其转换为5输入AND门。每次出现大于或小于它表示输入时,Z的非零条件仅表示一个输入。在汇编语言中,您将有一个跳转语句,告诉它如果所有条件都为真,则转到哪行代码,然后如果它们不是要跳转到哪行代码。现在,我知道数据流向哪个方向,如果它是一个字符串或一个变量,在门逻辑中全是1和0并不重要。只要我将其转换为门,我就可以通过任何其他被验证为操作系统安全的程序来确定信息流。如果在该代码的某些部分没有用户输入导致多米诺骨牌效应,无论多长时间,没有,不需要,等待没有用户输入,那么它必须是恶意代码。如果我离开计算机,另一台计算机呼叫我的计算机,并询问数据,网络链接,历史记录,信用卡号码或键击记录器。为什么屏幕上没有显示文字。哦,看看真相表。用户无法看到该信息,并且它从未通过它生成的代码的任何部分将其显示在屏幕上,并且它不会被发送到声卡。当用户与它无关时,它在真值表中是可检测的。但是,你必须能够通过几层软件,驱动程序,dll,编解码器,最后是你的用户界面来跟踪所有这些。

我应该能够将IF语句翻译成图形键盘,鼠标,屏幕,声音/扬声器,操纵杆,调制解调器/网络端口,打印机和程序作为一堆逻辑门。我从不需要运行程序来知道它是否会通过我的硬件发送不需要的东西。

有很多数字逻辑门模拟器,它们运行模拟逻辑门。在几秒钟内,如果不是片刻,确定该网络网络的所有可能的逻辑状态。那么,为什么没有人想要一种能够保持PARSE,MID,WEND,WHILE,LOOP UNTIL等命令的语言,在复杂的命令中就像复杂的科学计算器一样,并且只是管理指针/跳转命令。我已经研究了它,并测试了一些简短的汇编语言代码作为AND门,当它达到最匹配的时钟周期时。但是,没有像Demorgan那样的算法或风暴,而且你在基本代数中学到的大部分都是在编译之前使用数学来从二进制或源中消除不需要的代码。如果您有额外的命令或代码行可以用不同的方式编写,那么计算机实际上可以为您解决布尔代数方程。但是,如果你继续使用那里的程序语言,就会有更多的病毒。您将无法在操作系统中设计有效的启发式防病毒引擎。

I've read through my related threads, and I didn't see any answers.

This thread is where I attempted to say the same thing.  I just fail to make it simple.
http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/

I wish that Microsoft Research, would really look into Digital Logic Gates, in the simplest form.  The Graphic Language would consist of the basic logic gates, AND, OR, NOT, XOR, NAND, and NOR.  This piece of Code Represents a 3 input AND gate.

DIM X as MousePointer X
DIM Y as MousePointer Y
DIM Z as MouseClickEvent
DIM Output as Boolean 

Output = 'False'  'Gate Logic places the boolean sense of False as 0 in circuit design.

' Supposing that X is the Horizontal pixel grid on the screen and Y the vertical,
' Z could take place anywhere on the screen.

IF X > 180 AND X < 360 AND Y > 200 AND Y < 250 AND Z <> 0 THEN
Output = 'True'
ELSE
Output = 'False'
END IF

If that were a circuit, X were a voltage, Y another voltage, and Z a switch that was either on or off, between 180 and 360 volts X's swich is set to 1, and when Y's voltage is between 200 and 250 Volts, it's switch is on/set to an output of 1.  So, this could be drawn as a 3 input AND gate.  Since, the IF Statement is so flexible that we can do anything following the THEN or ELSE part of the code, the output of an AND gate is not always equal to one.  It is actually sent to one of if not a series of pointers.  In the logic of the Graphic Computer Language I am trying to establish, you should be able to use these sections of the program to generate a true boolean/Gate Logic Truth Table.  In any program all of the math that works for the least number of gates, works for these parts of your code.  If the pointer went to more code, I would just call a Sub Public or Private.

So, when I say, you could actually produce a virus free operating system, that doesn't mean when it arrives at the market.  That means for the duration of it's operation it can keep itself from running viruses.  First, you have to have the Langauge the computer can read.  Second, you have to derive the truth tables that define a virus.  If the compiler includes a decompiler, and the decompiler is just checking to make sure that the computer program was written by a native compiler, then the problem of having a machine figure out whether a program is a virus or not is nearly solved.  Every program requires User Input.  If it doesn't it has to be a driver, codec, DLL, but nothing that doesn't start with a mouse click, or a keystroke.  Now, think about a virus, it usually is more like a TSR that doesn't pay attention to the USER.  A video game always pays attention and the input is typically a joystick or other, sound or video.  Any binary file is treated as a binary first and only data.  Until, the decompiler has checked it, the operating system has to wait to execute the program.  That's why the operating system needs to be designed after the compiler.

There are dozens of different ways I could have written that last piece of code.  But, in Assembly Language, the way you would write the code would never include an IF statement.  X, Y, Z and Output would all be assigned values as Variables.  Keeping this centered around the ALU the Greater Than > and Less Than < turns this into a 5 input AND gate.  Each time you present greater than or less than it represents an input and the non-zero condition of Z only represents one input.  In Assembly Language, you would then have a jump statement to tell it which line of code to go to if all of the conditions were true, and then if they are not which line of code to jump to.  Now, I know which way data is flowing, it doesn't really matter if it's a string or a variable, in gate logic that's all 1s and 0s.  As long as I have converted that into a gate I can determin the flow of information through any other program that is verified as safe to the operating system.  If there is no user input causing the domino effect in some part of that code, no matter how long it is, that has no, requires no, and waits for no user input, then it must be malicious code.  If I walk away from my computer, and another computer calls my machine, and asks for data, web links, history, credit card numbers, or maybe a keystroke recorder.  Why doesn't text ever show on the screen.  Oh, look at the truth table.  The user cannot see the information, and it never makes it through any part of the code it generates to display it on the screen, and it's not sent to the sound card.  When the user has nothing to do with it, it is detectable in the truth table.  But, you have to be able to track all of that through several layers of software, drivers, dlls, codecs, and finally your user interface.

I should be able to translate that IF statement into a graphic of a keyboard, mouse, screen, sound/speaker, joystick, modem/network ports, printer, and the program as a bunch of logic gates.  I never need to run the program to know if it's going to send something unwanted to through my hardware.

There are plenty of Digital Logic Gate Simulators, that run simulated logic gates.  In a matter of seconds if not just a few moments, determine all of the possible logical states of that network of gates.  So, why doesn't anyone want a language that would keep commands like PARSE, MID, WEND, WHILE, LOOP UNTIL, go so far as a sophisticated scientific calculator in complex commands, and really just manage pointers/jump commands.  I have looked into it, and tested a few short pieces of Assembly Language Code to work as a AND gate, when it comes down the clock cycles it matches most.  But, then there are no alogorithms or theorms like Demorgan's and most of which you learn in basic algebra to use math to eliminate unneeded code from the binary or the source before it is compiled.  If you have extra commands or lines of code that could be written differently, the computer can actually solve that Boolean Algebraic equation for you.  But, if you continue to use the program languages that are out there, there will just be more viruses.  You won't have an Effective Heuristic Anti-Virus Engine designed into the Operating System.

推荐答案

您可能已经听说过停止问题。一旦系统变得足够强大以有效地计算,其行为就变得不可能进行静态分析。没有简单的方法。
You've probably heard of the halting problem. Once a system becomes powerful enough to effectively compute, its behavior becomes impossible to statically analyze. There's no easy way out of this.


这篇关于我找不到使用图形语言的编译器。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆