草庐IT

linux - 您在哪里检查 x86-64 机器上的系统调用原型(prototype)?

也就是说,你是怎么知道的特定系统调用需要多少个参数,每个参数应该在哪个寄存器中,最后是每个参数的含义?是否有一个类似man的命令可以告诉您这一点? 最佳答案 另请参阅:WhatarethecallingconventionsforUNIX&Linuxsystemcallsonx86-64你要找的是kernelABI,我找不到官网,但是有ablog有这样的信息。在带有int80h调用的x64中,它是:valuestoragesyscallnrraxarg1rdiarg2rsiarg3rdxarg4r10arg5r9arg6r8

linux - 07C0 :0000, 不是 x86 机器上与 0000 :7C00? 相同的物理地址吗

我提出问题的原因是StarmanseemstobelievetheGRUBLegacyauthor'sexplanation(下面莫名其妙的代码见:7C4BEA507C0000JMP0000:7C50;LongJumptothenextinstruction;becausesomebogusBIOSesjumpto;07C0:0000insteadof0000:7C00.当我执行Intel指定的算法以在第一个内存引用上构建有效地址时,我将07C0:乘以16(有效地将其左移四位或一个半字节)。然后我加上:0000的偏移量并得到十进制地址31,744。如果我将第二个内存引用的段左移四位,我

Linux x86 NASM - 子例程 : Print a dword from EAX

这个问题在这里已经有了答案:HowdoIprintanintegerinAssemblyLevelProgrammingwithoutprintffromtheclibrary?(5个答案)关闭2年前。所以我正在学习使用NASM语法的x86Linux程序集(天哪,又不是这个,你们都在想)。我正在尝试制作一个子例程,它将简单地将EAX中的值打印到标准输出。代码运行并退出时没有错误,但没有打印任何内容。我不知道为什么。首先,这是我正在处理的文件:segment.bssto_print:resd1segment.textglobalprint_eax_valprint_eax_val:;(t

linux - i386 :x64-32 vs i386 vs i386:x86_64 之间的区别

谁能解释一下这三种架构的区别?实际上,当我在Linux中构建64位应用程序时,出现链接错误:skippingincompatiblelibrary.awhensearchingforlibrary.a然后我在该库上使用了objdump-f并得到了以下输出:a.o:fileformatelf32-x86-64architecture:i386:x64-32,flags0x00000011:HAS_RELOC,HAS_SYMSstartaddress0x00000000这是否意味着该库是32位的?这就是我收到链接器错误的原因吗? 最佳答案

c - 在 x86_64/linux 上比 glibc 更快的数学库?

是否有更快的x86_64-linux的glibc的libm(和header?)替代品? 最佳答案 与ICC一起分发的数学库对于许多libm函数来说要快得多,但确实需要购买ICC。如果您对此感到好奇,我相信您可以下载免费试用版。我知道他们支持Linux,并且相信他们会尝试与GCC库直接兼容。ICC还包括数学核心库中许多libm函数的矢量化实现,这可能对您有用。 关于c-在x86_64/linux上比glibc更快的数学库?,我们在StackOverflow上找到一个类似的问题:

c - 如何在 x86-64 上使用 ptrace?

我正在学习教程here,并针对x86-64做了一些修改(基本上将eax替换为rax等)以便编译:#include#include#include#include#include#include#includeintmain(){pid_tchild;longorig_eax;child=fork();if(child==0){ptrace(PTRACE_TRACEME,0,NULL,NULL);execl("/bin/ls","ls",NULL);}else{wait(NULL);orig_eax=ptrace(PTRACE_PEEKUSER,child,4*ORIG_RAX,NULL

linux - 如何在 Arm 架构硬件上进行内存测试? (类似于 Memtest86)

关闭。这个问题是notaboutprogrammingorsoftwaredevelopment.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭22天前。Improvethisquestion有没有办法在Android设备的RAM上进行完整的内存测试?我正在开发一个驱动程序,但有时我会得到某

linux - 在 x86 nasm 中除法时出现浮点异常

我正忙于学习Assembly并且正在研究除法,但是我遇到了以下语句的泡菜:movedx,0x00000001moveax,0x00000000movecx,0x00000002idivecxGDB:0x08048071:movedx,0x10x08048076:moveax,0x00x0804807b:movecx,0x2=>0x08048080:idivecx我想将0x100000000除以0x00000002,因此由于除法的范围是EDX:EAX,我将0x1移入EDX,将0x0移入EAX。然后我将0x2移动到ECX并除法,不幸的是,这给了我一个浮点异常,我不确定我做错了什么。当使用d

linux - 无法理解 x86-64 函数序言

我遇到了崩溃,在调查时我发现自己完全被以下代码阻止了:0000000000000a00:a00:55push%rbpa01:4889e5mov%rsp,%rbpa04:4157push%r15a06:4156push%r14a08:4155push%r13a0a:4154push%r12a0c:53push%rbxa0d:4881ec48060000sub$0x648,%rspa14:48899598f9ffffmov%rdx,0xfffffffffffff998(%rbp)这是通过在64位Linuxx86系统上运行objdump--disassemble/usr/lib64/libc

c - ARM Linux 可执行文件神秘地运行在 x86_64 上

我正在使用Docker容器(thewtex/cross-compiler-linux-armv7)在x86_64系统。目标系统是一个ARMv7嵌入式系统(特别是带有库存固件的KoboAuraHD电子阅读器)。程序源码(hello_world.c)如下#includeintmain(intargc,char*argv[]){printf("HelloWorld!\n");return0;}出乎意料的是,我可以在主机系统上执行生成的可执行文件:andreas@andreas-pc:~/tmp/test$uname-a&&./helloLinuxandreas-pc4.5.5-201.fc2