小编Jen*_*ger的帖子

编译器级别的分支预测

我一直在阅读有关分支预测的内容,但我发现的唯一实现主要是在计算机的硬件方面.处理器似乎负责大部分预测.我的问题是,编译器可以进行分支预测吗?我发现的唯一的东西是2个方法,函数内联和循环展开.这些被认为是正确的?他们还在用吗?

compiler-construction cpu

3
推荐指数
1
解决办法
1785
查看次数

为什么"C:\ Windows\Microsoft.NET\assembly\GAC_32 ..."而不是"C:\ Windows\assembly\GAC_32"

<Component Guid="7F7333F5-F9ED-4712-8D1B-58AAC71790CB" Id="MyComponent"> <File Name="MyDll.dll" KeyPath="yes" Vital="yes" Id="MyDLL_GAC" Assembly=".net" Source="$(var.COMTRACERDIR)\MyDll.dll"> </File> </Component>

当我使用它来制作带有wix的*.msi时,我发现dll将安装在路径"C:\ Windows\Microsoft.NET\assembly\GAC_32 ..."而不是"C:\ Windows\assembly"中\ GAC_32" .

c# dll gac wix .net-assembly

3
推荐指数
1
解决办法
6785
查看次数

在web.config上注册一个控件程序集

我在我的项目中使用CKEditor,但是我试图让它工作而不需要在我正在使用它的每个页面中声明程序集.

我声明的程序集是这样的:

<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor" %>
Run Code Online (Sandbox Code Playgroud)

按照本网站上的说明,我在web.config中进行了以下更改

  <system.web>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
      <controls>
        <add tagPrefix="CKEditor" assembly="CKEditor.NET"/>
      </controls>
    </pages>
  </system.web>
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误

分析器错误消息: tagPrefix条目中找到的属性无效或缺失.对于用户控制,还必须指定'tagName'和'src'.对于自定义控件,您还必须指定"命名空间",并可选择"汇编"

我不确定我做错了什么.也许是一件愚蠢的事,不确定.

c# asp.net web-config .net-assembly ckeditor

3
推荐指数
1
解决办法
9235
查看次数

在程序集中使用int rand(void)

我正在尝试使用该功能

int rand(void)
Run Code Online (Sandbox Code Playgroud)

在集会中.

我该如何使用它?我想得到0到20之间的随机数.

我怎样才能做到这一点?

我正在使用Ubuntu 32位操作系统并使用at&t汇编语法.这是我的代码示例,我希望它在%edx注册表中放置0到20之间的随机数.

编辑:

    mov $APPLES_X, %ebx
    mov $0, %ecx
    mov $20, %edx
loop_ax:
    call    rand
    idiv    %edx
    mov %edx, (%ebx)

    add $4, %ebx

    inc %ecx
    cmp NAPPLES, %ecx
    jne loop_ax
Run Code Online (Sandbox Code Playgroud)

x86 assembly

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

在换码代码中插入换行符Easy 68k(68000)

我对组装很新,我正在尝试建立一个小程序.我无法弄清楚如何使用Easy68k在装配中插入换行符.例如,我开始编写基本的黑色插孔模拟器,我需要在问候第一个玩家后进行换行.我尝试将"\n"结合到变量声明中,但它只是打印出来就好像它是文本的一部分.

根据Easy 68K帮助I/O部分,我可以使用"LF EQU $ 0A新线(换行)"但我不知道如何实现它.

START   ORG        $400             ; Start of program area
    CLR.L      D0               ; Clear D0
    CLR.L      D1               ; Clear D1
    CLR.L      D2               ; Clear D2
    CLR.L      D3               ; Clear D3
    CLR.L      D4               ; Clear D4
    CLR.L      D5               ; Clear D5
    CLR.L      D6               ; Clear D6
    MOVE.L     playerTotal, D2  ; Store Player total in D1
    MOVE.L     card, D3         ; Store current card in D2
    MOVE.B     playerAce, D4    ; Store number of aces player has in D3
    MOVE …
Run Code Online (Sandbox Code Playgroud)

assembly 68000

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

使用Easy 68K(68000)在范围内组装随机数

我正在使用Easy 68K模拟器创建一个简单的黑色杰克游戏,需要使用随机数来分配卡片.我的卡必须在2到11的范围内.我似乎每次都得到相同的数字,并且它不在我期望的范围内.我的卡值需要以D3结尾,所以我有以下随机数码:

 CLR.L       D0
 CLR.L       D3
 MOVE.B      #8, D0         ;Access time
 TRAP        #15
 AND.L       #$5FFFFF,D1    ;prevent overflow in divu
 DIVU        #10, D1
 SWAP        D1
 ADDQ.W      #1, D1
 MOVE        D1, D3
Run Code Online (Sandbox Code Playgroud)

我通过修改本网站上的代码来实现:https://notendur.hi.is/voe1/3.%20onn/Tolvuhogun/EASy68K/Examples/tutorial3.X68

我希望找到帮助生成2到11号.我一直在互联网上搜索几个小时.我知道我需要通过使用Move.B#8,D0来获取时间,但除此之外,我还没有取得多大进展.任何帮助将非常感谢!

random assembly 68000

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

理解/解码晦涩的汇编代码

就像我之前的问题一样,这涉及到一个分配,其中调用一个需要特定密码的方法,代码是隐藏的,我们必须从汇编代码中推断密码(我想避免点击 。我已经完成了几个阶段,所以到目前为止,我的理解越来越好,但是这个阶段有几个方面我遇到了麻烦。到目前为止,我知道这个阶段的密码是两个整数。回溯一直是我对其中一些方法的转到方法,但不是很有效对这个阶段有帮助。

  1. 我了解 cltq 将 eax(rax) 扩展为 4 个字,但我不确定这如何影响计算,也不确定如果多次点击该行会发生什么。
  2. Phase5+82 -> Phase5+65(循环?)我尝试从什么值开始,以便 ecx(rcx) 可以通过最终比较?
  3. mov 0x402600(,%rax,4),%eax <- 这一行到底做了什么?空白让我很困惑,空白= 0吗?
  4. 任何其他帮助理解正在发生的事情以及我应该如何解决输入问题都会有所帮助,我尝试将其转换回 C 代码,就像之前的阶段一样

    0x00000000004010b4 <phase_5+0>:         sub    $0x18,%rsp
    0x00000000004010b8 <phase_5+4>:         lea    0x10(%rsp),%rcx
    0x00000000004010bd <phase_5+9>:         lea    0x14(%rsp),%rdx
    0x00000000004010c2 <phase_5+14>:        mov    $0x4026aa,%esi
    0x00000000004010c7 <phase_5+19>:        mov    $0x0,%eax
    0x00000000004010cc <phase_5+24>:        callq  0x400b80<sscanf@plt>
    0x00000000004010d1 <phase_5+29>:        cmp    $0x1,%eax
    0x00000000004010d4 <phase_5+32>:        jg     0x4010db<phase_5+39>
    0x00000000004010d6 <phase_5+34>:        callq  0x401421(explode_bomb)
    0x00000000004010db <phase_5+39>:        mov    0x14(%rsp),%eax
    0x00000000004010df <phase_5+43>:        and    $0xf,%eax
    0x00000000004010e2 <phase_5+46>:        mov    %eax,0x14(%rsp)
    0x00000000004010e6 <phase_5+50>:        cmp    $0xf,%eax
    0x00000000004010e9 <phase_5+53>:        je     0x40111b <phase_5+103>
    0x00000000004010eb …
    Run Code Online (Sandbox Code Playgroud)

c assembly cracking

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

循环展开优化,这是如何工作的

考虑这个C代码:

int sum=0;
for(int i=0;i<5;i++)
    sum+=i;
Run Code Online (Sandbox Code Playgroud)

这可以通过这种方式转换为(伪)程序集(无需循环展开):

% pseudo-code assembly
ADDI $R10, #0   % sum
ADDI $R11, #0   % i
LOOP:
ADD $R10, $R11
ADDI $R11, #1
BNE $R11, #5 LOOP
Run Code Online (Sandbox Code Playgroud)

所以我的第一个问题是如何在这两种方式之间使用循环展开来翻译此代码:

1)

ADDI $R10, #0
ADDI $R10, #0
ADDI $R10, #1
ADDI $R10, #2
ADDI $R10, #3
ADDI $R10, #4
Run Code Online (Sandbox Code Playgroud)

2)

   ADD $R10, #10
Run Code Online (Sandbox Code Playgroud)

编译器是否能够优化代码并直接知道它必须在不执行所有总和的情况下添加10?

此外,是否有可能使用分支指令阻止管道?我必须这样写吗:

% pseudo-code assembly
ADDI $R10, #0   % sum
ADDI $R11, #0   % i
LOOP:
ADD $R10, $R11
ADDI $R11, #1
NOP   % is …
Run Code Online (Sandbox Code Playgroud)

c assembly

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

如何在窗口之间进行通信?

编辑:这个问题可以概括如下:在不同的窗口中,两个单独的html页面如何异步交换信息?


对于一个类项目,我必须构建一个基于Web的聊天客户端.教授提供了一个工作服务器.

我有一部分启动并运行 - 任何连接的用户都可以向服务器发送消息,它将被转发给所有连接的用户并出现在他们的主聊天窗口,聊天室风格.

但是,客户端还需要具有发送/接收私人消息的选项.如果发送或接收私人消息,则打开一个新窗口,显示仅与该用户通信的聊天界面.客户端向/从该用户发送/接收的任何未来私人消息将显示在此窗口而不是主聊天室中.

完全失去了.收到私人消息后,如何打开新窗口然后继续与该窗口通信?如果通过主窗口的websocket连接从该用户收到更多私人消息,则必须将它们发送到该窗口,如果从该窗口向其他用户发送消息,则必须通过主窗口的websocket连接中继消息.

如果可以完成,怎么办呢?

javascript jquery websocket

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

为什么我们不能将(bne-beq)寄存器与立即数(Assembly-MIPS)进行比较?

例如,在添加我们有addi添加寄存器和立即,为什么在这种情况下,我们不能有bnei或beqi ...

我应该回答这个问题,但我不确定......有什么帮助吗?

assembly mips

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