Tag: nasm

一个好的NASM / FASM教程?

有谁知道任何好的NASM或FASM教程? 我正在尝试学习汇编,但似乎无法find任何好的资源。

在L1caching上获取Haswell的峰值带宽:只有62%

我试图在L1caching中获得全部带宽,以便在Intel处理器上使用以下function float triad(float *x, float *y, float *z, const int n) { float k = 3.14159f; for(int i=0; i<n; i++) { z[i] = x[i] + k*y[i]; } } 这是STREAM的三合一function。 使用此function的SandyBridge / IvyBridge处理器(使用与NASM的汇编)可获得95%的峰值。 但是,除非我展开循环,否则使用Haswell I只能达到峰值的62%。 如果我展开16次,我得到92%。 我不明白这一点。 我决定使用NASM在汇编中编写我的function。 assembly中的主循环看起来像这样。 .L2: vmovaps ymm1, [rdi+rax] vfmadd231ps ymm1, ymm2, [rsi+rax] vmovaps [rdx+rax], ymm1 add rax, 32 jne .L2 在例子12.7-12.11的Agner […]

学习汇编语言是否值得?

学习ASM还是值得的吗? 我知道一点,但是我没有真正使用它,或者没有正确地学习它,因为我在汇编程序中学习的所有东西都可以在十分之一的时间用C或C ++等语言来完成。 那么,我真的应该学习和使用ASM吗? 它会对我有什么好的专业吗? 它会增加我的机智吗? 总之,它会让我成为一个更好的程序员吗? 注意:我正在谈论像FASM或NASM这样的低级汇编,而不是像HLA (高级汇编)那样的东西。

NASM汇编将input转换为整数?

好的,所以我对组装很新,事实上,我对assembly很陌生。 我写了一段代码,只是简单地把用户的数字input,乘以10,并通过程序退出状态(通过在terminal键入echo $?)将结果expression给用户。问题是,它是没有给出正确的数字,4×10显示为144.那么我认为input可能会作为一个字符,而不是一个整数。 我的问题在于,如何将字符input转换为整数,以便在算术计算中使用? 如果有人能够回答记住我是初学者,这将是非常好的:)另外,如何将所述整数转换回字符? section .data section .bss input resb 4 section .text global _start _start: mov eax, 3 mov ebx, 0 mov ecx, input mov edx, 4 int 0x80 mov ebx, 10 imul ebx, ecx mov eax, 1 int 0x80

如何在Windows下编译hello world?

我想在Windows下编写一些基本的东西,我正在使用NASM,但是我什么都不能工作。 如何在没有Windows上的C函数的帮助下编写和编译hello world?

引导加载程序不会跳转到内核代码

我正在写小操作系统 – 用于练习。 我开始使用bootloader。 我想创build一个运行在16位真实模式(现在)的小型命令系统。 我已经创build了bootloader来重置驱动器,然后在bootloader之后加载扇区。 问题是因为jmp函数没有实际发生。 我试图加载下一个扇区在0x7E00(我不完全确定如何使用es:bx指向地址,这可能是一个问题,我相信它的地址:偏移量),就在bootloader之后。 这是代码: ; ; SECTOR 0x0 ; ;dl is number of harddrive where is bootloader org 0x7C00 bits 16 ;reset hard drive xor ah,ah int 0x13 ;read sectors clc mov bx,0x7E00 mov es,bx xor bx,bx mov ah,0x02 ;function mov al,0x1 ;sectors to read mov ch,0x0 ;tracks mov cl,0x1 […]