assembly

    0热度

    1回答

    我在网上看到很多教程,其中assembly language与C一起使用,以构建新的内核映像。但我不明白为什么要装配,而C Compiler可以从c代码生成asm。 使用assembly代码进行内核编程的原因是什么?以及如何在C下开发内核而不需要在asm中编写代码?

    0热度

    1回答

    如果您有由数字构成的MIPS一个字阵列(5,3,0,19)已在,比方说,一个起始地址,$ T1,我添加到$ T1 (起始地址)我知道0($ t1)现在将包含而不是。但是,数组的实际内容会改变吗?如在数组仍然是(5,3,0,19)或现在它会(3,0,19),因为我添加到起始地址?

    0热度

    1回答

    阶段: 0x00000000004013d9 <+0>: sub $0x2c8,%rsp #reserve 0x2c8 in stack 0x00000000004013e0 <+7>: mov %rdi,%rsi #rsi = rdi 0x00000000004013e3 <+10>: movw $0x6cb,0x42(%rsp) #stack pointer + 0

    1热度

    2回答

    我正在用汇编程序存在: xor eax, eax ; make eax equal to 0 push eax ; pushes null push 0x68732f2f ; pushes /sh (//) push 0x6e69622f ; pushes /bin mov ebx, esp ; passes the first argument push eax ; e

    2热度

    1回答

    的算法如下: res <- 0 for i from 15 downto 0 do: change the ith bit of result to 1 if res^2 > x then: change the ith bit of res back to 0 return res 我完全理解它是如何工作的,但我不知道这是什么方法被调用。我一直在寻找wik

    -1热度

    1回答

    我试图将C程序转换为MIPS汇编程序。以下是该程序我的C代码:(注:灯泡[数字]是用于由用户输入的“数量”初始化为全零个值的数组) for(int i = 1; i <= number; i++) for(int j = 1; j <= number; j++) if(j % i == 0) Bulbs[j-1] = (Bulbs[j-1] + 1)

    0热度

    1回答

    以下内容做了什么? testq %rdx, %rdx cmovg %rcx, %rax 我明白,testq是一个位和两个寄存器之间,但它如何与标志? 这将转化为c? 例如如果%rdx将持有价值0x01,那么我们就会有0x01 & 0x01 = 0x01,这将设置 ZF = 0, SF = 0, OF = 0. 为了什么,我能找到,如果 ˜(SF ˆ OF) & ˜ZF 这将解决以进行

    1热度

    2回答

    我想创建一个可以计算除法问题的程序。问题是当我尝试用负数分割时,我的程序崩溃了,尽管我创建了一个名为“DivNeg”的分支,该分支应该可以防止它崩溃。有没有人有如何解决这个问题的想法? 这是我的汇编代码 .386 .model flat public _Divide .code _Divide proc mov eax, [esp + 4] ; First addres

    0热度

    1回答

    如果此问题听起来很愚蠢,但我对shellcoding非常陌生,并且我试图获得一个适用于32位Linux机器的hello world示例。 由于这是shellcoding,我使用了一些技巧来删除空字节并缩短代码。在这里,它是:下面的C代码中。然而 $ nasm -f elf print4.asm $ ld -o print4 -m elf_i386 print4.o ,我试图运行它: $猫sh

    -2热度

    1回答

    我有以下的代码组装。但我不明白什么是STT_FUNC? .section .rodata Lhello: .asciz "Hello!" .section .text .globl function1 .type function1, STT_FUNC function1: