intel-syntax

    2热度

    2回答

    我试图将我的简单程序从Intel语法转换为AT & T(用GAS进行编译)。我已经成功地转换了我的应用程序的一大部分,但我仍然遇到了int(中断)的错误。我的功能是这样的: printf: mov $0x0e, %ah mov $0x07, %bl nextchar: lodsb or %al, %al jz return

    1热度

    2回答

    使用下面的代码,我尝试在两个较高字节中“存储”ebx的较低两个字节,然后使用较低顺序的bx作为临时变量来访问偏移量“池子”。最后,我通过右移数据来恢复原始值(它只使用最初的两个字节)。 rol ebx, 16 mov bl, dl ;(other operations involving bx) mov [pool+bx], dword esi shr ebx, 16 该汇编只是

    0热度

    1回答

    _Str_compare proc ; (byte * str1, byte * str2, DWORD str1_len, DWORD str2_len) :: Returns -1, 0, or 1 for str1 is lexiographically before, equivalent to, or after str2, respectively. Also modifies the

    24热度

    4回答

    例如,如果我们正在编写一个简单的Hello World类型的节目,.data段可能包含这样的内容: section .data msg db 'Enter something: ' len equ $ - msg 是什么在这个例子中,$代表,以及为什么$ - msg等于的长度串?

    2热度

    2回答

    我碰到了NASM文档中的以下说明,但我无法完全理解它们的正面或反面。不幸的是,关于这些指令的英特尔文档也有些缺乏。 PREFETCHNTA m8 ; 0F 18 /0 [KATMAI] PREFETCHT0 m8 ; 0F 18 /1 [KATMAI] PREFETCHT1 m8 ; 0F 18 /2 [KATMAI] PREFETCHT2 m8 ; 0F

    1热度

    1回答

    我知道你可以使用ASM直接把AS​​M放在C中,但我想知道是否有可能在Assembly中编译一个库,编译它,然后访问你在C库中声明的函数? 所以我知道我应该使用预先编写的库,但这只是为了教育目的和乐趣!因此,举例来说,我想用sys调用打印出屏幕,现在我写了一些程序集来做到这一点,并命名了函数print,然后将它编译成某种类型的lib文件.so/.lib/.a那么我会在那个库中引用那个函数呢? 我只

    1热度

    1回答

    我看到使用两种语法在程序集“defined”中定义了“变量”,第一个看起来像一个标签,第二个看起来像变量名。两者可以互换使用,还是每个人使用都有特定的原因? 例如: msg db "Hello World",0x0a 看起来有点像在C/C++变量名,而 msg: db "Hello World",0x0a 看起来有点像在任一ASM或C/C++的标签。 是否有使用一种或另一种语法的原因? 他

    5热度

    1回答

    我正在跟踪一些x86代码的任务,我想知道“cmpl”究竟做了什么以及如何预测“jne”是否会被满足。 80484bf: 83 7d f0 07 cmpl $0x7,-0x10(%ebp) 80484c3: 75 16 jne 80484db 此外,这使用英特尔语法。 谢谢。

    0热度

    1回答

    我试图将我的片段转换为使用类似于gcc的内联asm语法的编译器。我阅读文档,一切都很好,直到我碰到这条线: mov eax, dword ptr fs:[0x20] 我转换,为: movl 0x20(%fs:), %eax 编译翻转,告诉我,fs是一个32位寄存器,该操作是无效的。我应该如何在& t语法中访问fs?

    3热度

    2回答

    我目前在学习汇编语言ARM; 为此,我试图将一些x86 code (AT&T Syntax)转换为ARM程序集(Intel Syntax)的代码。 __asm__("movl $0x0804c000, %eax;"); __asm__("mov R0,#0x0804c000"); 从这个document,我了解到,在86堆结构的块从1开始0x0804c000。但我当我尝试做相同的arm,