x86-64是Intel x86架构的64位扩展
我试图按照同样的C语言写法建立一个TCP绑定shellcode。下面是asm: global _start section .text _start:; socket() call xor rax,rax add rax,41 xor ....
在x86-64中,当我们要推送堆栈上的东西时,是否总是要做pushq?
因为在x86-64中,16个寄存器都可以是8个字节,在函数调用开始时,当函数(callee)要推送它要使用的callee保存的寄存器(%rbx、%rbp和%r12-15)时,它......。
64位Windows似乎用rcx = r8 = &PEB和rdx = r9 = &entrypoint来调用一个exe的entrypoint,就像entrypoint被声明为entrypoint(PEB *peb, void *entry)一样。这些细节是否...
我正在Ubuntu 18.04 X86_64中测试一个X86汇编代码,如下所示,#define I8042_DATA_REG $0x60 #define I8042_STATUS_REG $0x64 .globl flashy .text * Flash ...
我正在使用下面的汇编代码来设置uid(0),并在缓冲区溢出时得到一个shell xor rdi,rdi mov al,0x69 syscall xor rdx,rdx movabs rbx,0x68732f6e69622fff shr rbx,。
我试图用这些宏将3个整数(即每个21位)存储在一个长的int中: typedef long int Triple; #define TR_A(o) ((int)((o & 0x7FFFFC0000000000) >> 42)) #define TR_B(o) ((int)((...))
我想把第一个长度为4的命令行参数放进缓冲区,我可以通过以下方式获取其中的每一个字符: .code64 .global _start .bss .lcomm mybuf , 4 .text _start: mov 16(%rsp) , ...
/ VMware检测如Elias Bachaalany所描述的函数IsInsideVMware: Boolean; begin Result := True; try asm push edx; push ecx; push ebx; mov eax, 'VMXh'; ...
当编译一个循环时,turbofan似乎在大多数时候都会剥离第一个循环迭代。例如一个循环,比如: function fill256(int32Array) { var i = 255; do { int32Array[i] = 0; } while(...)
clang __asm__在case statment中使用标签,得到错误:指令操作数无效。
我正在尝试在C源代码中添加Label(仪器仪表);对汇编有一点经验,comipler是clang;我在CASE语句中的__asm__和Label有一个奇怪的行为!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)。
从软件进程的角度来看,是否有任何关于PCIe设备针对常规内存的卡到主机写入的保证,其中单个TLP写入是完全包含的......。
我想知道在Linux中x86_64有哪些不同类型的IPI。特别是,我想找出IPI中断的不同中断处理程序。在了解...
在NASM(Intel)中,我可以这样写: mov rax, `Hello!\n` 而这相当于: mov rax, 0xa216f6c6c6548 GAS (AT&T)是否支持任何等价的速记,还是我被写 ...
Loadbitmap在x86版本编译时运行良好,但在x64版本编译时却无法运行。
我是个新手,不懂C++。这是我从一本WIN32 API书上改编的代码。只有在debug的x86模式开启时,才能如愿以偿。当有x64模式时,虽然在编译,但不能工作。我试着改变了...
当我使用一个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开发者手册中关于中断例程的内容。根据手册,如果中断或异常推送了一个错误代码,中断处理程序必须从堆栈中弹出错误代码。...