x86-64是Intel x86架构的64位扩展
当我使用一个void函数的返回值时(通过铸造一个函数指针),到底会发生什么?
当我运行以下程序时,它总是显示 "是"。但是当我把SOME_CONSTANT改为-2时,它总是打印 "no"。为什么会这样呢?我使用visual studio 2019编译器与优化......
好奇x64微软Fastcall实现中的返回地址存储在哪里。干杯。
在x86-32中,你把参数推到堆栈中,而在x86-64中,它也使用一些特定的寄存器,并且只在它之后使用堆栈。这就是说,我不明白为什么我在尝试打印时得到Segmentation故障...。
为什么在 numeric_limits<float>::min()中加1会返回1?
为什么从float max中减去1会返回一个合理的值, 而在float min中加1会返回1? 我认为如果你加减一个小于该特定的epsilon的值......,它将返回最小的标准化正值。
我已经阅读了AMD64开发者手册中关于中断例程的内容。根据手册,如果中断或异常推送了一个错误代码,中断处理程序必须从堆栈中弹出错误代码。...
如果我在C语言中取消引用一个非法地址,我得到SIGSEGV和有效的gdb回溯。但如果我把它传给Snprintf,回溯就会被销毁
在我的x86-64 Linux程序中,我故意这样做: char *ptr = 0x3e8; int x = *(int *)ptr; 当我在gdb中运行它时,进程由于SIGSEGV而崩溃,并打印一个有效的回溯。如果我改用: char s[...
我想用asm将64位汇编指令组装成原始机器代码。如果我这样做,我得到一个错误:错误:指令不支持16位模式 例子输入:mov rax, 0x12345678 ... ...
无法编译x86_64 .s和.c文件:未定义对函数[重复]的引用。
这是我的问题,我试图创建一个汇编函数库,并将其用于C程序。我遇到了一个未定义引用的错误。我在学校为这个项目提供的vm上使用xubuntu(所以我 ...
所以我试图在下面的代码中用给定的汇编代码计算M和N的值。 int array1[M][N]; int array2[N][M]; void copyelement(int i, int j) { array1[i][j] = array2[j][i] ...
我需要在一个多核x86-64处理器上增加一些硬件,并使用仿真进行测试,所以我想使用qemu。但是我想知道在qemu中对CPU建模的大致思路。有什么好的 ...
我正在为我自己的类C语言(x86-64)制作自己的编译器。但我很困惑,如何编译另一种语言的片段,即x86-64汇编,如:int main() { ...。
当我从汇编中调用printf时,我想设置颜色。这是我的代码。输出: mov rdi, answer mov rsi, r10 mov rax,0 调用printf部分.data answer: db ... ...
我对shell脚本很陌生,在尝试检查字符串中的子串时遇到了一个问题。我想建立一个代码,检查你是否在运行一个基于64位的系统。这是...
是否可以暂时抑制单条ret指令的英特尔CET,或者用其他方式使用retpolines?
英特尔CET(控制流执行技术)由两块组成。SS(影子堆栈)和IBT(间接分支跟踪)。如果你需要间接分支到某个地方,你不能把一个 ...
我目前正在尝试通过python进行JIT。我是通过另一个SO的问题找到peachpy的。大多数情况下,这是很容易的,但我在使用外部c函数时失败了。我想调用putchar,所以一个带......的函数。
我在内存中有大量的64位值。不幸的是,它们可能未与64位地址对齐。我的目标是更改所有这些值的字节序,即交换/反转它们的值...
我在四处游玩,并试图了解计算机和程序的低级操作。为此,我正在尝试链接Assembly和C。我有2个程序文件:这里的一些C代码...
我以为我了解如何处理L1D写入未命中,但是仔细思考就使我感到困惑。这是一个汇编语言片段:; rdi包含一些有效的64字节对齐的...
被叫人如何知道,要弹出多少个arg以及在x64中按哪个顺序?
据此:在x64-amd系统V ABI中,i386和x86-64上UNIX和Linux系统调用的调用约定是什么,args依次传递到以下寄存器:%rdi,%rsi,%rdx, ...
假设您有一个已完成的进程(现在不在内存中),但是在运行时,它使用了0x12345000物理地址(4KB页)。现在,MMU将0x12345000(物理)分配给...