ASM int 0x10 跳转到第二个扇区后停止工作
... »
... »
... »
... »
... »
... »
... »
... »
... »
... »
... »
我正在运行 x86 处理器,但我相信我的问题很笼统。我很好奇 CMP + JE 序列与单个 MUL 操作所消耗的时钟周期的理论差异。 在 C 伪代码中: unsigned foo = 1; /* must be 0 or 1 */ unsigned num = 0; /* Method 1: CMP + JE*/ if(foo == 1){ num = 5; } /* Met... »
我正在处理 openssl 库文件,任何人都可以帮助我处理 openssl (RHEL5x64) 的 64 位预编译库 我对我生成的库有这个警告。 /usr/bin/ld: skipping incompatible /home/devlog/prog/toto/libssl.so when searching for -lssl /usr/bin/ld: skipping incompati... »
我刚刚发现 push 指令可以有一个立即数 byte 、 word 、 dword 参数,并且每个参数都有不同的操作码。我正在阅读的书中没有示例,所以我不明白汇编程序如何区分这三种类型。例如,如果我写push 12h,汇编器将如何解释它,堆栈上实际会发生什么? ... »
我正在努力加深对汇编语言的理解。我知道当函数创建堆栈帧时,它会推送当前的EBP,而不是将堆栈指针值复制到EBP。第一个(也是唯一的)函数参数由EBP + 8 访问。但是为什么是8?推送EBP后的下一个值逻辑上偏移4。我看了很多网页,但似乎我不明白这部分。... »
我想弄清楚为什么 g++ 不生成 SIMD 代码。 信息 GCC/操作系统/CPU: $ gcc -v gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) $ cat /proc/cpuinfo ... model name : Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz ... 这是我的 C++... »
有一个 c 运行时库,根据 https://en.wikipedia.org/wiki/Crt0 在文件 ctr0.o 中调用以在调用 main 之前初始化变量。我在这里复制了它: .text .globl _start str : .asciz "abcd\n" _start: xor %ebp, %ebp #basePointer == 0 mov (%rsp), %e... »
如果db代表Define Byte并且可以容纳8位(1个字节),为什么我们可以在db中使用6个字节的字符串?我知道一个字符只有1个字节,而db拥有1个字节。 section .data text db "Yellow" db 在更高级的语言(与 asm 相比)中就像 char 一样,我们可以只增加缓冲区,但汇编会自动吗? #include <stdio.h> int mai... »
我在 64 位 Linux 上使用 Python 2.7。我有以下 Python 脚本,女巫应该执行一个简单的 Hello World shellcode。 import urllib2 import ctypes shellcode = "\xb8\x01\x00\x00\x00\xbf\x01\x00\x00\x00\x48\xbe\xd8\x00\x60\x00\x00\x00\x00\... »
这些是函数的前四行。我知道前两行在堆栈中创建了一个新框架,基本上是“设置”行。 lea 指令有什么作用? 40148e: 48 83 ec 18 sub $0x18,%rsp 401492: 48 89 f2 mov %rsi,%rdx 401495: 48 8d 4e 04 lea 0x4(%rsi),%rcx 401499: 48 8d 46 14 ... »
我想测试#pragma omp parallel for 和#pragma omp simd 的简单矩阵加法程序。当我分别使用它们时,我没有收到任何错误,而且看起来很好。但是,我想测试使用它们两者可以获得多少性能。如果我在外循环之前使用#pragma omp parallel for,在内循环之前使用#pragma omp simd,我也不会出错。当我在外循环之前同时使用它们时会发生错误。我在运行... »