att

    1热度

    1回答

    我试图让86对LEA指令良好的抓地力: leal (%edx, %edx, 4), %eax leal (%edx, %edx, 2), %eax 鉴于这两条线,我知道: eax = edx + edx*4 然后 eax = edx + edx*2 两个问题。首先,如果这些指令按照本例中的顺序出现,那么一旦第二行执行,eax寄存器就会被覆盖?什么会被加载到寄存器中?另一个地址?或者这是对这些

    2热度

    1回答

    我想通过IDT处理内核中断。 我在Linux下使用Intel x86。 我已经设置了我的IDT和我的中断条目,并且我启动了一些测试来查看我的中断处理程序。 当我尝试int $0x0时,它完美地工作:我的处理程序被调用,但是当我尝试一些错误代码推入的异常时,我输入了一个无限循环。 架构如下: 当异常到达时,我的处理程序的第一部分是ASM和调用一个常见的C部分。 my_handler.c void h

    3热度

    1回答

    此指令英特尔ISA参考文档是明确的:从xmm2和xmm3/m128使用屏蔽位在指定的掩码寄存器,xmm4 VPBLENDVB xmm1, xmm2, xmm3/m128, xmm4 选择的字节值,并且这些值存储到xmm1。 xmm1为目标,xmm2/3/4是源操作数 那么,这成为使用AT & T语法?我们知道目标寄存器必须是最后一个,但源操作数的顺序是什么? vpblendvb $xmm2,

    0热度

    1回答

    我学习了Intel x86架构的AT & T语法,和我有点无能,以下语法的含义: SHRB $ 1,2(%ESP) INCW 2 (%ESP) 我最初的解释是: ESP =(ESP + 2)>> 1 esp = esp + 2 我找不到任何有关以这种方式使用增加的参考,这导致我相信我在这里有更根本性的缺陷。 我的解释是否正确,或者我完全不在基地?感谢您的时间。

    0热度

    1回答

    我想在AT & T大会上创建一个简单的密码程序,但我在屏蔽输入时遇到了麻烦。我想要发生的是当用户输入字符时,它们以星号出现在屏幕上。在Intel语法是比较简单的: mov ah, 08h int 21h mov dl,2ah mov ah,02h int 21h 它使用英特尔命令来读取输入而不呼应它,而是打印一个星号。 我试图解决AT & T语法中的这个问题,我遇到了一些麻烦。 任何

    2热度

    2回答

    我试图将CrapWOW散列从http://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.html转换为delphi或宁可basm。我的ASM技能非常有限,但我认为它不会太难... 无论如何,在一些关于asm转换的网页的帮助下,我来到这个,但它不工作...尤其是,对于最后一部分我不知道如何转换。这是寄存器赋值给参数和返回参数吗? function

    1热度

    1回答

    我有只有BIOS的Atom-32bit-intel主板n450,我的目标是使用API​​C定时器并将它连接到一个ISR(0x21)。 过了一会儿,我discoverd是IDT和GDT已经存在(可能是由BIOS内置),没有必要建立它们(软件是用C语言和AT & T汇编): /*Read the IDTR*/ sidt (idt_ptr) /*Read the GDTR*/

    0热度

    1回答

    我知道这听起来很愚蠢,但我对汇编语言很陌生,所以请耐心等待! 我有以下汇编代码,这是我试图做的简化版本。 1 # print.s 2 # C callable: char* print() 3 4 .data 5 output: 6 .asciz "abcd" 7 8 .text 9 .globl _printbin 10 11 _printbin: 12 pus

    1热度

    1回答

    所以我正在代码洞里,我基本上用我的跳转替换_memcpy的调用,然后我想保存源代码中的内容。原装配: mov [esp+8], edx ; size mov [esp+4], eax ; ptr to source mov eax, [ebp+arg_4] mov [esp], eax ; ptr to destination call _memcpy 我挣扎瓦特/本作的语法

    3热度

    1回答

    从我所了解的英特尔手册中,应该可以编写一个像“add $ 0x7f,%ebx”这样的指令,它应该被编码为83/0 ib,总共三个字节。但是,当我这样做时(无论我使用“add”,“addb”还是“addl”),它总是将立即值提升为32位值,并编码为81/0 ID并占用6个字节。 adc,sub等存在同样的问题。请注意,我正在使用带有GNU as的AT & T语法。 我一直在寻找解决方案超过一天,并没