小编Ren*_*ena的帖子

GBZ80:什么构成"半携带"?

Game Boy Z80 CPU有一个半进位标志,我似乎无法找到有关何时设置/清除它的更多信息.

我的理解至今是任何8位加,减,移位或旋转操作(或者其他人?),将其设置为结果(?)的第4位,而DAA指令集/莫名其妙地使用这个.我不确定的是16位指令如何影响它以及它是否受到某些寄存器的影响.

z80 emulation gameboy

35
推荐指数
2
解决办法
8255
查看次数

Lua:C++模块不能引用彼此,未定义的符号

我创建了两个模块(共享对象)CPU和SaveState作为模拟器的一部分.两者都独立编译成.so文件,并在运行时通过Lua脚本使用require()加载; 即:

SaveState = require("SaveState")
CPU = require("CPU")
Run Code Online (Sandbox Code Playgroud)

在CPU中,有一个在SaveState上运行的方法:

int CPU::save_state(SaveState *state) {
    state->begin_section(savestate_namespace, savestate_data_size);

    state->write16(this->reg.af);
    state->write16(this->reg.bc);
    state->write16(this->reg.de);
    state->write16(this->reg.hl);
    state->write16(this->reg.sp);
    state->write16(this->reg.pc);
    state->write8 (this->interrupts_enabled);
    state->write8 (this->irq_flags);
    state->write8 (this->ie_flags);
    state->write8 (this->halted);
    state->write8 (this->halt_bug);
    state->write8 (this->extra_cycles);
    state->write64(this->total_cycles);
    state->write64(this->idle_cycles);

    return SaveState::OK;
}
Run Code Online (Sandbox Code Playgroud)

编译很好,但require("CPU")线路失败:

lua5.1: error loading module 'cpu' from file './src/cpu/build/cpu.so':
    ./src/cpu/build/cpu.so: undefined symbol: _ZN9SaveState7write64Ey
Run Code Online (Sandbox Code Playgroud)

使用nm -D我可以在savestate.so中看到确切的符号,但在运行时它不会出于某种原因.

c++ lua dynamic-linking dlopen undefined-symbol

6
推荐指数
1
解决办法
692
查看次数

Chromium没有解释就关闭了WebSocket

我有Chromium 12.0.742.112(90304),我正在尝试用它设置一个简单的WebSocket服务器.我收到一个握手请求,如:

Upgrade: WebSocket
Connection: Upgrade
Host: akira:22222
Origin: http://akira:22222
Sec-WebSocket-Key1: ;39LP*eC48 n /r0P6  v6548
Sec-WebSocket-Key2: 1 0  r 362547    4  4  G
Run Code Online (Sandbox Code Playgroud)

接着是8个关键字节,在这种情况下是88 09 F9 EE 21 13 F4 0D.我已经确认这些是Chromium在网络控制台选项卡中显示的相同密钥.我计算前两个键为:

Key1: 3948066548 / 4 = 987016637
Key2: 1036254744 / 12 = 86354562
Run Code Online (Sandbox Code Playgroud)

并发送我的回复:

000001  48 54 54 50  2F 31 2E 31  20 31 30 31  20 57 65 62  HTTP/1.1 101 Web
000011  20 53 6F 63  6B 65 74 20  50 72 6F 74  6F 63 6F …
Run Code Online (Sandbox Code Playgroud)

lua chromium websocket

5
推荐指数
1
解决办法
576
查看次数

在Linux中获取C中的主音量

我正试图在Linux中检索(可能稍后设置)主音量.我正在使用PulseAudio,但理想情况下它也适用于ALSA.

我发现这篇关于如何设置音量的非常有用的帖子,从中我可以推断出snd_mixer_selem_get_playback_volume()的存在来检索当前设置.然而,在我的系统上,这似乎给了我错误的读数 - 混音器程序显示100%,最高约66%.

如果我打开pavucontrol,我可以看到这个输出设备的音量与我从这里得到的读数相匹配,所以我假设它给了我硬件音量设置,而不是我想要的全局主音量.

c linux api audio alsa

5
推荐指数
1
解决办法
9679
查看次数

无法构建 ARM 交叉编译器:缺少 pthread.h

我正在尝试按照我找到的各个页面上的说明在 ARMv6(在 AMD64 主机上)上构建一个针对 Linux 的交叉编译器,但是每次遇到相同的错误时:

~/projects/kobo/gcc> echo $TARGET
arm-linux-gnueabi

~/projects/kobo/gcc> echo $PREFIX
/usr/local/arm-linux-gnueabi

~/projects/kobo/gcc> echo $PATH
/usr/local/arm-linux-gnueabi/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/android-sdk/platform-tools/:/usr/local/pspdev/bin:/usr/local/pspdev/psp/sdk/bin:/opt/devkitpro/devkitARM/bin

~/projects/kobo/gcc> cd build-binutils/

…/kobo/gcc/build-binutils> ../binutils-2.28/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for a BSD-compatible install... /bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... gawk
checking for gcc... gcc
checking …
Run Code Online (Sandbox Code Playgroud)

gcc arm cross-compiling

5
推荐指数
0
解决办法
1259
查看次数