att

    3热度

    1回答

    在我努力理解如何使用GNU binutils构建一个简单的引导装载程序时使用了 gas我遇到过这个问题,你如何告诉链接器将数据放在哪里,放在一个使用.org的文件中,以将文件大小保持在512字节的同时前进位置计数器。我似乎无法找到办法做到这一点。 ,试图做到这一点的汇编程序是: # Author: Matthew Hoggan # Date Created: Tuesday, Mar 6, 20

    15热度

    1回答

    我写了这个简单的内核模块: #include <linux/module.h> // for printk() int init(void) { printk("n Kello, everybody! nn"); return 0; } void exit(void) { printk("n Goodbye now... nn"); } MOD

    3热度

    2回答

    我一直在为i386实模式编写一些“独立”代码,并遇到了一些奇怪的错误,而PXE网络启动我的代码: PXE-E79: NBP is too big to fit in free base memory PXE-M0F: Exiting Intel Boot Agent. 后与我的二进制多摆弄我分离它作为 .data 段标记后具有任何的数据或代码。 经过hexdumping之后,我发现ld将

    3热度

    2回答

    我只是想到了这一点,而不是将我的新问题(“为什么?”)分解成另一个问题,我认为最好的解决方案是将问题和解释保存在同一页面上。 我正在编写一个基本的汇编程序来立即启动并立即退出使用内核中断int 0x80。我当前的代码很简单如下: /* Simple exit via kern-interrupt */ .globl start start: pushl $0x0 mov

    1热度

    1回答

    注:我使用的是基于BSD的系统,所以如果我没记错的话,这意味着对于调用的子程序ARGS /功能推到不放在寄存器堆栈 我一直在尝试组装,我想尝试我的简单内核退出程序: .globl _start _start: movl $0x20, %eax pushl %eax movl $0x1, %eax subl $0x4, %esp int $0x8

    2热度

    2回答

    当我读了一些反汇编代码,因为我不起来AT & T语法,我不知道什么样的一些代码(%ESP,1)表示。 11 printf("%x", a); 0x401386 <main+182>: movl $0x1,0x4(%esp,1) 0x40138e <main+190>: movl $0x40300d,(%esp,1) 0x401395 <main+197>: call 0x401810

    2热度

    2回答

    我现在正在gdb上运行一些代码,我不知道这两条指令实际上做了什么。如果有人能帮助我,我会很感激。 add -0x2c(%ebp, %ebx, 4), %eax cmp %eax, -0x28(%ebp, %ebx, 4)

    5热度

    2回答

    我目前正在对AT & T汇编的转让,现在我不得不追加两个字符串: message: .asciz "String 1" before: .asciz "String 2" 我真的有不知道如何做到这一点还是如何开始。我已经在网上搜索过,但找不到任何有用的信息。我想我必须手动将第二个字符串的字符复制到第一个字符串的末尾,但我不确定这一点。 任何人都可以请向我解释如何做到这一点? :)

    2热度

    1回答

    我目前正在忙于在汇编(AT & T)中做一个小的(有迄今固定的问题)测验。 我设计了一个小菜单,要求输入1 2或3的某个输入 问题是我的cmpl没有完成它的工作,我无法弄清楚为什么。 它只是退出,不管输入是什么。 下面是我的一些代码: .text menu: .asciz "Please select an option: 1 - Start the quiz! 2 - Highscores

    0热度

    1回答

    我试图在装配中连接两个字符串,但我似乎无法得到它的工作。我有以下的代码: .data message: .asciz "message" leading: .asciz "leading" .globl main main: push $message push $leading call strcat push %eax ca