标签: dispatch

在C中,确保为多个代码段修复了汇编指令的数量

在我正在编写的虚拟机中,我希望能够以类似于以下伪代码的方式调度命令.

add: reg[memory[pc+1]] =  reg[memory[pc+1]] + reg[memory[pc+2]]; pc += 2; goto done;
sub: reg[memory[pc+1]] =  reg[memory[pc+1]] - reg[memory[pc+2]]; pc += 2; goto done;
cmp: /* Would take more space than simply x = x + y; */ goto done;

for(int pc = 0; memory[pc] != END; pc++) {
    goto currentPositionInMemorySomehow + (memory[pc] * lengthOfInstruction);
    done:
}
Run Code Online (Sandbox Code Playgroud)

其中memory是包含字节码的数组,pc是程序计数器.但要做到这一点,我们要求跳转到的每个位置在下一个块之前具有完全相同的指令数.除非有一个很棒的平台无关的汇编代码,否则不能选择下载到汇编代码,这样就可以使用相同的代码并编译到Linux,Mac和Windows.无论每个处理器都坐在上面.任何和所有的帮助将不胜感激.

c assembly goto dispatch vm-implementation

0
推荐指数
1
解决办法
132
查看次数

JavaScript方法调度过程

谁能解释当调用方法选择运行哪个函数时JavaScript所经历的过程?我能找到的大多数在线资源都解释了如何使用JavaScript对象实现特定行为,但没有解释方法分配在JavaScript中的工作原理。

javascript methods dispatch

0
推荐指数
1
解决办法
1762
查看次数

如何在字典中传递多个函数参数?

我已经使用了这个模式,但是我现在正在尝试将多个参数传递给函数,如果我只是添加另一个参数或者是否有另一个我缺少的语法片段?

    def newChannel(hname, cname):
        pass

    action = {'newChannel': (newChannel, hname),
         'newNetwork': (newNetwork, cname) , 'loginError': (loginError, nName)}

    handler, param = action.get(eventType)
    handler(param)
Run Code Online (Sandbox Code Playgroud)

我怎么能通过多个参数?像这样......

    action = { 'newChannel': (newChannel, hname, cname) } 
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

编辑:这会飞吗?

    action = {'newChannelQueueCreated': (newChannelQueueCreated, (channelName, timestamp)), 'login':    
    (login, networkName), 'pushSceneToChannel': (pushSceneToChannel, channelName),  
    'channelRemovedFromNetwork': (channelRemovedFromNetwork, (channelName, timestamp))}
     print ok 
     handler, getter  = action.get(eventType(ok))
     handler(*getter(ok)) 
Run Code Online (Sandbox Code Playgroud)

python dispatch

0
推荐指数
1
解决办法
184
查看次数

为什么静态调度如此迅速

我知道类中有一个方法列表。我也知道动态调度的机制。但是我对静态调度感到困惑。静态方法在哪里。全局哈希表中是否有静态方法。以及静态调度如何工作。流程是什么样的。

static dispatch swift

0
推荐指数
1
解决办法
346
查看次数

Java Generic/Type Dispatch Question

考虑以下程序:

import java.util.List;
import java.util.ArrayList;

public class TypeTest {

    public static class TypeTestA extends TypeTest {

    }

    public static class TypeTestB extends TypeTest {

    }

    public static final class Printer {
        public void print(TypeTest t) {
            System.out.println("T");
        }

        public void print(TypeTestA t) {
            System.out.println("A");
        }

        public void print(TypeTestB t) {
            System.out.println("B");
        }

        public <T extends TypeTest> void print(List<T> t) {
            for (T tt : t) {
                print(normalize(tt.getClass(), tt));
            }
        }

        private static <T> T normalize(Class<T> clz, Object o) {
            return …
Run Code Online (Sandbox Code Playgroud)

java generics dispatch

-1
推荐指数
1
解决办法
1317
查看次数

如果 R 是用 S4 类编写的,它会和 Julia 一样快吗?

我对 Julia 和 R 实际如何解释代码知之甚少,但我读到过使 Julia 如此之快的原因是多重分派,它可以预测类型。

现在在 R 中,S4 类也有多个调度,所以我的问题是:

当所有东西都是用 S4 类编写的时候,R 能像 Julia 一样快吗?

如果不是:是什么阻碍了 R 和 Julia 一样快?

r dispatch julia

-1
推荐指数
1
解决办法
75
查看次数

在 Ruby 中按符号名称调用私有方法

我有一个方法的符号名称,我想用一些参数调用它。我真正想做的归结为以下代码片段:

method.to_proc.call(method)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,method是对象上方法的符号名称。就我而言,我试图调用一个恰好是对象私有的方法。

这是我得到的错误输出:

>$ ruby symbol_methods.rb 
symbol_methods.rb:33:in `call': private method `test_value_1' called for "value":String (NoMethodError)
    from symbol_methods.rb:33:in `block (2 levels) in <main>'
    from symbol_methods.rb:30:in `each'
    from symbol_methods.rb:30:in `block in <main>'
    from symbol_methods.rb:29:in `each'
    from symbol_methods.rb:29:in `<main>'
Run Code Online (Sandbox Code Playgroud)

这是一个演示此行为的自包含示例:

data = [
  ["value", true],
  ["any value here", true],
  ["Value", true],
]

def matches_value(string)
  string == "value"
end

def contains_value(string)
  string.gsub(/.*?value.*?/, "\\1")
end

def matches_value_ignore_case(string)
  string.downcase == "value"
end

#tests
[:matches_value, :contains_value, :matches_value_ignore_case].each_with_index do |method, index|
  test = data[index]
  value …
Run Code Online (Sandbox Code Playgroud)

ruby testing symbols dispatch proc

-2
推荐指数
1
解决办法
1008
查看次数

如何在目标c中创建调度队列?

我想在目标 c 中使用以下代码。

var recordingQueue = DispatchQueue(label: "recordingQueue", qos: DispatchQoS.userInteractive)
Run Code Online (Sandbox Code Playgroud)

objective-c dispatch ios dispatch-queue

-2
推荐指数
1
解决办法
4580
查看次数