タグ

ブックマーク / 7ujm.net (2)

  • gccでアセンブラを出力しそれを実行ファイルにする

    ○gccでアセンブラを出力しそれを実行ファイルにする ■元になるソースコード ▽ファイル名 : test.c #include <stdio.h> main(){ while(1){ char buff[1024]; scanf("%s",buff); printf("%s HELLO \n",buff); } } ■アセンブラファイルを出力する gcc -S test.c ▽生成されたファイル名 : test.s .file "test.c" .section .rodata .LC0: .string "%s" .LC1: .string "%s HELLO \n" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $1048, %esp andl $-16, %esp movl

  • OSなしで実行できるプログラム

    ■OSなしで実行できるプログラム PCの起動時にはBIOSの働きにより、起動ディスクの先頭512byte分がメモリに転送されて 実行されます。 すなわち、自作プログラムをアセンブラで書いて、フロッピーディスクの先頭に書き込み、そのディスクから 起動させればプログラムが実行されます。 アセンブラにはnasmを使用し、ディスクの先頭に書き込むにはddコマンドを使用します。 nasmもddもLinuxやCygwinに入っていると思われます。 ▼nasmを使ってコンパイルするコマンド loader.asmをコンパイルしてloader.exeを作成します nasm -o loader.exe loader.asm ▼ddコマンドでディスクの先頭512byteにデータ(loader.exe)を書き込む dd if=loader.exe of=/dev/fd0 bs=512 count=1 seek=0

  • 1