首页 文章
  • -3 votes
     answers
     views

    我试图用汇编语言[暂停]找到最小数字

    汇编语言程序:我试图解决这个问题一段时间 . 我在8086微处理器的物理地址中注册了30值 . 我需要在那里找到最小数,如果有办法获取数组中的所有值?并将min转换为F“其温度值” . 转换已经解决,但找到min是问题 . 谢谢
  • 2 votes
     answers
     views

    在jonesforth中使用gdb显示字典单词

    在jonesforth中,字典条目的布局如下: <--- DICTIONARY ENTRY (HEADER) -----------------------> +------------------------+--------+---------- - - - - +----------- - - - - | LINK POINTER | LENGTH/| NAM...
  • -4 votes
     answers
     views

    MIPS组装连接器练习

    我已经获得了一个链接练习的讲义 . 我知道我需要识别需要修改哪些指令,这些指令涉及哪些地址,并找出地址 . 但在实践中,我不知道该怎么做 . 以下是所述练习的图片 . 任何帮助表示赞赏 . Linker Exercise
  • -4 votes
     answers
     views

    编写一个MIPS汇编代码,用于实现将仿射变换应用于输入图像的函数[暂停]

    [使用映射输入处的像素的2×3变换矩阵(M)来描述这种变换 图像到输出图像中的不同坐标 . 仿射变换具有这种属性 将输入图像中的平行线映射到输出图像中的平行线 . 仿射变换的例子 包括:翻译,旋转,反思和缩放 . ] 1 [以下算法演示了将仿射变换应用于输入图像 . 在这 算法x和y表示当前像素坐标 - x是列索引,y是 行索引 . 左上角像素的坐标为(0,0) . 对于x,y坐标处的每个输入图...
  • -5 votes
     answers
     views

    编写MIPS汇编代码,该代码实现将仿射变换应用于输入图像的功能 . [等候接听]

    这是代码的开头 [使用映射输入处的像素的2×3变换矩阵(M)来描述这种变换 图像到输出图像中的不同坐标 . 仿射变换具有这种属性 将输入图像中的平行线映射到输出图像中的平行线 . 仿射变换的例子 包括:翻译,旋转,反思和规模 . 以下算法演示了将仿射变换应用于输入图像 . 在这 算法x和y表示当前像素坐标 - x是列索引,y是 行索引 . 左上角像素的坐标为(0,0) . 对于x,y坐标处的每个...
  • 0 votes
     answers
     views

    使用乘法和除法的小到大端 - MIPS汇编

    我有一个学校作业,要求我以三种不同的方式将一个单词从小端转换为大端 . 其中之一是使用乘法和除法 . 我知道向左移动会将数字乘以2,但我仍然无法弄清楚如何利用它 . 这是我用旋转做的 . 有人可以帮助我踩到这个并用除法和乘法来做吗? .data .text .globl main main: li $t0,0x11223344 #number to be converted in t0 ...
  • -3 votes
     answers
     views

    AARM64链表

    我希望有人可以帮我一些AARM64代码,因为我根本不知道怎么写这个 . 谢谢您的帮助! 未排序的8字节无符号整数序列按顺序存储在标签数据中,序列的末尾由值0x0指示 . 您将在AARM64程序集中编写四个过程来将此数据作为链接列表处理 . 一旦定义了这些过程,使用它们编写程序从数据中读取整数,将它们存储在链表中,然后将它们复制到地址0x60000 . 新过程应该在寄存器X0中期望一个整数值 . 它...
  • 0 votes
     answers
     views

    g生成一个没有push和pop的汇编代码

    我发现g编译器几乎没有任何推/弹指令就会生成汇编代码 . 它只在进入/退出功能时使用它们 . 每次它在堆栈中放置字节时,它会产生2或3条指令,例如: movl foo, %eax subl $4, %esp movl %eax, (%esp)` 只是 pushl foo . 这有什么理由吗?它更快还是什么? 谢谢 .
  • 0 votes
     answers
     views

    如何将xby中的nullbyby修复到我的asm shellcode中?

    我试图xoring,但我注意到它需要被xored push 0xc0a80004 ,但我怎么能实现这个呢?我正在使用x64 shellcode,但我不想以自动方式进行 . 我想在路上这样做 . section .text global _start _start: push 0xc0a80004 ...
  • -2 votes
     answers
     views

    delphi asm代码win32 vs win64

    我在Delphi 10.1中的项目有一些这样的汇编函数: function MyFunc: Word; asm PUSH 0 FNSTCW [ESP].Word POP EAX end; 我需要在win64中编译项目,但是像 POP EAX 这样的行有 E2116 Invalid combination of opcode and operands 错误...
  • 2 votes
     answers
     views

    如何在asm中反转三角形

    我不能为了这个人的生活而这样做 . 当我运行这个程序时,前两个三角形输出正确,但我遇到第三个三角形的问题 . 我想要得到的是: * * * * * * 但我似乎无法获得所需的正确数量的空间,并且我一直在无限循环中结束 . org 100h .data Input db "Enter size of the triangle between 2 to 9: $" ;St...
  • 4 votes
     answers
     views

    在执行过程中中断指令

    假设CPU正在运行汇编指令,比如, FOO 将在几个时钟(例如10)中执行 中断请求刚刚执行 FOO ,处理器需要中断 . 它是否等到命令正确执行,或者 FOO 中止并将重新启动?考虑到不同类型的中断优先级,它的行为是否有所不同?
  • 0 votes
     answers
     views

    在装配中对角打印数字

    我试图在装配中对角显示0-9,但是输出将我对角线打印的数字放在窗口的中间 . 这是代码: start: mov ah, 02h mov cl, 0Ah ;counter (10) mov dx, 02h ;mov bx, 02h mov dl, 30h ;start printing 0-9 mov dh, 02h ;start row mov al, 02h int 21h again: ...
  • 2 votes
     answers
     views

    我应该学习汇编语言或C,了解“真正的编程”是如何工作的吗?

    我是一名Web开发人员,主要从事Ruby和C#... 我想学习一门低级语言,所以我看起来不像我(计算机科学专家)老板面前的屁股 . 我听过很多纯粹的嗡嗡声,关于汇编语言是学习计算机实际工作方式的唯一方法,但另一方面,C语言可能更有用,而不仅仅是理论 . 所以我的问题是...... Would Learning C teach me enough computer science theory / ...
  • 5 votes
     answers
     views

    x86上的零更改跳转是否清除了指令预取队列?

    在x86上,有人可以确认零位移跳跃(即不改变CS或IP值的跳转)是否会清除指令预取队列?
  • 6 votes
     answers
     views

    与缓存预取提示相反

    是否有一个提示我可以放入我的代码中,表明应该从缓存中删除一行?与预取提示相反,这表明我将很快需要一条线 . 在我的情况下,我知道什么时候我不需要一条线,所以我希望能够摆脱它以释放我需要的线的空间 .
  • 68 votes
     answers
     views

    这是“不应该发生”崩溃AMD Fusion CPU的错误吗?

    我的公司已经开始让许多客户打电话,因为我们的程序因其系统上的访问冲突而崩溃 . 崩溃发生在SQLite 3.6.23.1中,我们将其作为应用程序的一部分提供 . (我们提供自定义构建,以便使用与应用程序其余部分相同的VC库,但它是库存SQLite代码 . ) 当 pcache1Fetch 执行 call 00000000 时发生崩溃,如WinDbg调用堆栈所示: 0b50e5c4 719f9fa...
  • 57 votes
     answers
     views

    预取示例?

    任何人都可以举例或链接到在GCC中使用 __builtin_prefetch 的示例(或者通常只是asm指令prefetcht0)以获得实质性的性能优势吗?特别是,我希望这个例子符合以下标准: 这是一个简单,小巧,独立的例子 . 删除 __builtin_prefetch 指令会导致性能下降 . 用相应的内存访问替换 __builtin_prefetch 指令会导致性能下降 . 也...
  • 570 votes
     answers
     views

    如何实现每个周期4个FLOP的理论最大值?

    如何在现代x86-64 Intel CPU上实现每个周期4个浮点运算(双精度)的理论峰值性能? 据我所知,在大多数现代Intel CPU上完成SSE add 需要三个周期,而 mul 需要五个周期(例如参见Agner Fog's 'Instruction Tables') . 由于流水线操作,如果算法至少有三个独立的求和,则每个周期的吞吐量可以达到一个 add . 由于打包 addpd 以及标...
  • 15 votes
     answers
     views

    在现代(流水线/超标量)处理器上执行x86 rep指令

    我最近一直在写x86程序集(为了好玩),并且想知道rep前缀字符串指令是否实际上在现代处理器上具有性能优势,或者它们是否仅用于后向兼容性 . 我理解为什么当处理器一次只运行一条指令时,英特尔最初会实现rep指令,但是现在使用它们有什么好处呢? 通过循环可以编译更多指令,还有更多要填充管道和/或无序发布 . 现代处理器是为优化这些重复前缀指令而构建的,还是在现代代码中很少使用的rep指令,它们对制造...
  • 2 votes
     answers
     views

    关于x86预取指令

    PREFETCH指令带入缓存的字节数???它是否等于缓存行大小?是否可以预取长度大于缓存行大小的数据?
  • 2 votes
     answers
     views

    使用预取队列进行反调试不适用于我的cpu

    Why does this code enable me to detect a debugger? 上面的链接告诉我使用预取队列进行反调试的方法,然后我尝试使用下面的代码进行测试,但是我失败了 . 任何人都可以帮我指出我的代码是错误的 . 我的cpu是Intel(R)Core(TM)i7-2630QM 2.00GHz . 非常感谢 ML :D:\ Programs \ masm32 \ Bin ...
  • 2 votes
     answers
     views

    进入保护模式后,为什么预取队列无效?

    英特尔开发人员手册建议在切换到保护模式后,我们会在MOV CR0指令更改执行流程并将处理器序列化后立即执行JMP或CALL指令 . 其目的是使预取队列无效,如第9章第9.10.2节, START.ASM Listing ,第174-186行中的代码示例所示: 174 ; enter protected mode 175 MOV EBX,CR0 176 OR EBX,PE_BIT 177 MOV C...
  • 0 votes
     answers
     views

    使用div指令在x86 NASM程序集中浮点异常

    我有一个任务,我必须输入一个数字,并找出所有素数,但不超过该数字 . 例如,如果我在程序中输入9,它应该打印3,5和7 . 我确定数字是否为素数的计划是将其除以2并检查余数是否为0.如果余数为0,则程序从被除数中减去1,然后循环返回到顶部再次进行除法 . 如果余数!= 0,则将其打印到屏幕上,然后再次减少红利 . 这种情况发生,直到被除数为0.只有这不是发生的事情,无论出于何种原因,每当我使用 D...
  • 2 votes
     answers
     views

    在汇编程序中打印浮点数

    我正在尝试从assemler调用printf函数打印浮点值 . 它适用于字符串和整数值,但无法打印浮点数 . 以下是工作代码的示例: global main extern printf section .data message: db "String is: %d %x %s", 10, 0 end_message: db &quot...
  • 0 votes
     answers
     views

    插入排序不起作用,32位组装

    我正在尝试使用NASM在Linux中实现32位汇编中的插入排序,并且我在运行中遇到了分段错误(更不用说由于某种原因'printf'打印随机垃圾值,我不完全确定原因),这里是代码:section .rodata MSG:DB“欢迎来sortMe,请排序我”,10,0 S1:DB“%d”,10,0; 10 ='\ n',0 ='\ 0' section .data array DD 5,1,7,...
  • 0 votes
     answers
     views

    NASM从寄存器移动到内存

    我知道那里有很多关于NASM和mov的引用,但要么我缺少基本的东西,要么人们需要写更好的帮助指南! SECTION .data fmtStart: db "Enter two numbers in format '# #'", 10, 0 fmtTest: db "sum: %d", 10, 0 input:...
  • 0 votes
     answers
     views

    运行程序后出现NASM分段故障(核心转储) . 我在下面附带的程序中出现了什么错误?

    %macro print 2 mov ecx,%1 mov edx,%2 mov ebx,1 mov eax,4 int 80h %endmacro section .data m dq "Big endian number is : 1020304050607080",10 ...
  • 0 votes
     answers
     views

    Linux上的NASM:使用sys_read在最后添加额外的行

    我此刻正在学习assmebler,我终于设法从终端读取输入并用它来计算 . 我使用sys_read并且它工作得非常好但是当我使用它时终端的行为就像我在运行程序后按下回车(带有 root@kali:~/ASM$ 的一行) . 使用scanf时不会发生这种情况 . 这是我的代码: sys_read equ 3 sys_write equ 4 stdout equ 1 stdin equ...
  • 0 votes
     answers
     views

    x86 NASM将字符串转换为整数

    这是一个简单的问题,但它让我头晕目眩 . 我需要将一串字符(输入为负十进制数)转换为无符号整数 . rdi寄存器保存要转换的字符串 . rax寄存器将保存结果 . xor rsi, rsi xor rax, rax xor dl, dl xor rdx, rdx convert: mov dl, [rdi+rsi] ;+rsi causes segment...

热门问题