assembly

    3热度

    2回答

    下面以x86架构的示例代码, # define INC(_lval,_lqual) \ __asm__ __volatile__ (\ "lock ; incl (%0)" : /*out*/ : /*in*/"r"(&(_lval)) : "memory", "cc") 请有人帮助我相当于MIPS32拱。

    4热度

    5回答

    有没有一种或多或少的可靠方法来判断内存中某个位置的数据是处理器指令还是某些其他数据的开始? 例如,E8 3F BD 6A 00可以是call相对的0x6ABD3F偏移指令(E8),或者它可能是三个字节属于一些其它的指令数据,接着push 0(6A 00)。 我知道这个问题听起来很愚蠢,可能没有简单的方法,但也许指令集的设计是考虑到这个问题,也许一些简单的代码检查位置周围的+ -100字节可以给出很

    1热度

    3回答

    我使用Easy68k来制作一个包含while循环的简单程序。 假设寄存器A0指向我的数据,它们是单词。 为什么这不起作用? MOVE.W (A0) , D3 MOVE.W (A0)+, (A0) MOVE.W (A0) , D3 如果A0点最初的数量2,之后,4号,结果我想是第一移动后,2被存储,则增量和第三移动之后,4被存储。 但是,最后一步没有效果。

    8热度

    2回答

    我想了解一些汇编代码,并设法完成它的大部分除了几行。我能够理解大部分内部发生的事情,但我们无法完全理解代码的开始和结束时发生了什么(以及为什么)。有人可以对此有所了解吗? int main() { int a, b; a = 12; b = 20; b = a + 123; return 0; } 反汇编版本: 8048394:8d 4c 2

    1热度

    2回答

    我试图在Linux中使用JWasm编译器运行以下汇编代码。但是对于所有的命令,它说,找不到命令。为什么?并且它以“;”开始的行中返回一个错误。这是一种评论线吗?我可以删除这些行吗?谢谢。 ;--- "hello world" for 64-bit Linux, using SYSCALL. ;--- assemble: JWasm -elf64 -Fo=Lin64_1.o Lin64_1.asm

    -1热度

    3回答

    我正在寻找一个在抽象c +原子或伪汇编中的同步原语(自旋锁,互斥体,信号量,读写锁,条件变量,...)的典型实现的良好在线参考(即任何合理的执行原子操作序列的符号)或x86 asm。从最天真的实现开始,然后解决它们的缺点和一些解决缺陷的方法将是很好的。

    20热度

    4回答

    Linux内核使用lock; addl $0,0(%%esp)作为写入屏障,而RE2库使用xchgl (%0),%0作为写入屏障。有什么区别,哪个更好? x86还需要读取屏障指令吗? RE2将其读取屏障函数定义为x86上的禁用操作,而Linux根据SSE2是否可用将其定义为lfence或禁用操作。何时需要lfence?

    1热度

    3回答

    我正试图用Masm32组装一个简单的“Hello world”应用程序。它装配精细,但当我尝试链接,链接器说 LINK:错误LNK2001:解析外部符号_WinMainCRTStartup prog1.exe:致命错误LNK1120:1周无法解析的外部 这是该程序的源代码: .586P .MODEL FLAT, STDCALL STD_OUTPUT_HANDLE equ -11 ; Pr

    2热度

    1回答

    我正在处理一些MIPS汇编代码,并且不确定如何在运行时分配内存。到目前为止,我一直在使用堆栈或数据段来存储我可能需要的任何东西,但如果我想要更持久的东西呢?具体来说,我怎么知道分配时选择哪个内存地址?我怎么知道我不覆盖某些东西(例如堆栈或程序指令)?我可以从0x0000开始,但我不知道该区块内有什么。 我已阅读Assembly memory allocation,但似乎没有回答这个问题。 感谢,

    0热度

    2回答

    基于Windows的可执行文件是如何工作的? 如何在可执行文件中找到起始地址? 对于任何文件执行的地址存储在哪里,我们如何读取这些地址? 对于任何DLL或EXE文件的调用和ret如何工作? 给我提示使用ida pro反汇编程序。