草庐IT

IDA汇编

全部标签

linux - 使用 waitid 系统调用在汇编中等待克隆的 child

我正在等待我克隆的进程。但是,当父级对waitid进行系统调用时,我在使用strace时得到一个-1ECHILD。尽管克隆调用返回了创建的子进程的PID,如下所示:clone(child_stack=0x7ffe2b412d10,flags=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWPID)=3735waitid(P_PID,3735,NULL,WEXITED,NULL)=-1ECHILD(Nochildprocesses)如果我创建一个重复调用waitid的循环,它最终会给出等待child的预期结果。这使我相信存在某种竞争条件,ch

ARM64启动汇编和内存初始化(中) --- (二)

接上文。2.5初始化cpu状态(__cpu_setup)虽然在异常初始化流程中已经设置了sctlr_el1等系统控制寄存器,但在打开mmu前还需要其它一些准备工作。......#arch/arm64/mm/proc.S/** __cpu_setup** InitialisetheprocessorforturningtheMMUon.**Output:* Returninx0thevalueoftheSCTLR_EL1register.*/ .pushsection".idmap.text","awx"'放在.idmap.text段中'SYM_FUNC_START(__cpu_setup) t

c - 在 AT&T IA-32 Linux 汇编程序 (gas) 上拆分字符串

.section.dataastring:.asciz"11010101"format:.asciz"%d\n".section.text.globl_start_start:xorl%ecx,%ecxmovbastring(%ecx,1),%almovzbl%al,%eaxpushl%eaxpushl$formatcallprintfaddl$8,%espmovl$1,%eaxmovl$0,%ebxint$0x80假设我想分解.asciz字符串1101011并得到它的第一个。我该怎么做?上面的代码不工作,它打印49或其他东西。 最佳答案

c - 在 AT&T IA-32 Linux 汇编程序 (gas) 上拆分字符串

.section.dataastring:.asciz"11010101"format:.asciz"%d\n".section.text.globl_start_start:xorl%ecx,%ecxmovbastring(%ecx,1),%almovzbl%al,%eaxpushl%eaxpushl$formatcallprintfaddl$8,%espmovl$1,%eaxmovl$0,%ebxint$0x80假设我想分解.asciz字符串1101011并得到它的第一个。我该怎么做?上面的代码不工作,它打印49或其他东西。 最佳答案

c - 使用 ARM 内联汇编在没有 libc 的情况下进行系统调用

这个问题在这里已经有了答案:Can_startbethethumbfunction?(3个答案)关闭8年前。我想在不使用libc的情况下编写一个小型独立可执行文件。模拟一些libc函数我需要的是具有使用内联汇编进行系统调用的函数:intsyscall(inta,...){return__asm__volatile(/*DOSTHHERE*/);}我正在使用Linux和ARM处理器。编辑:找到解决方案:intsyscall(intn,...){return__asm__volatile("movr7,r0\nmovr0,r1\nmovr1,r2\nmovr2,r3\nswi#1\n");

c - 使用 ARM 内联汇编在没有 libc 的情况下进行系统调用

这个问题在这里已经有了答案:Can_startbethethumbfunction?(3个答案)关闭8年前。我想在不使用libc的情况下编写一个小型独立可执行文件。模拟一些libc函数我需要的是具有使用内联汇编进行系统调用的函数:intsyscall(inta,...){return__asm__volatile(/*DOSTHHERE*/);}我正在使用Linux和ARM处理器。编辑:找到解决方案:intsyscall(intn,...){return__asm__volatile("movr7,r0\nmovr0,r1\nmovr1,r2\nmovr2,r3\nswi#1\n");

linux - 在 i386 的 linux 内核 2.6.11 中,此内联汇编 (:"0"(THREAD_SIZE - 1)) 的含义是什么

在do_IRQ中可以找到如下代码!#ifdefCONFIG_DEBUG_STACKOVERFLOW/*Debuggingcheckforstackoverflow:istherelessthan1KBfree?*/{longesp;__asm____volatile__("andl%%esp,%0":"=r"(esp):"0"(THREAD_SIZE-1));if(unlikely(esp我没看懂这个asm汇编的意思asm_volatile_("andl%%esp,%0":"=r"(esp):"0"(THREAD_SIZE-1));THREAD_SIZE-1意味着什么?我记得括号里的符

linux - 在 i386 的 linux 内核 2.6.11 中,此内联汇编 (:"0"(THREAD_SIZE - 1)) 的含义是什么

在do_IRQ中可以找到如下代码!#ifdefCONFIG_DEBUG_STACKOVERFLOW/*Debuggingcheckforstackoverflow:istherelessthan1KBfree?*/{longesp;__asm____volatile__("andl%%esp,%0":"=r"(esp):"0"(THREAD_SIZE-1));if(unlikely(esp我没看懂这个asm汇编的意思asm_volatile_("andl%%esp,%0":"=r"(esp):"0"(THREAD_SIZE-1));THREAD_SIZE-1意味着什么?我记得括号里的符

linux - 小数值相减(汇编)

如何在程序集中减去十进制值。IA32(Linux)1:movedx,1/2subecx,ebxsubecx,edxmovbal2,ecx我试过了,但它有些跳过小数点的减法。如果我输入.5,它会给我一个错误。error:junk`.5'afterexpression 最佳答案 正如lightbulbone在他的回答中正确指出的那样,在使用通用寄存器(eax等)时,您不能处理浮点值。您可以使用FPU,正如灯泡所建议的那样,但这相对乏味。或者-除非您的代码需要在古老的CPU上运行-您可以使用SSE指令来完成此任务,这要简单得多。与您所展示

linux - 小数值相减(汇编)

如何在程序集中减去十进制值。IA32(Linux)1:movedx,1/2subecx,ebxsubecx,edxmovbal2,ecx我试过了,但它有些跳过小数点的减法。如果我输入.5,它会给我一个错误。error:junk`.5'afterexpression 最佳答案 正如lightbulbone在他的回答中正确指出的那样,在使用通用寄存器(eax等)时,您不能处理浮点值。您可以使用FPU,正如灯泡所建议的那样,但这相对乏味。或者-除非您的代码需要在古老的CPU上运行-您可以使用SSE指令来完成此任务,这要简单得多。与您所展示