タグ

programmingとgccに関するedo_m18のブックマーク (2)

  • 少し詳しい型変換の説明

    型変換については、第4章で簡単に説明しましたが、複雑な規則があり、迷うことの多い部分です。ですから、ここで少し詳しく算術型の型変換について説明してみようと思います。 なお、説明中で用いたコードの実行結果は「Borland C++ Compiler 5.5」(int:4バイト short:2バイト char:1バイト)で確認をしています。 1.汎整数拡張 文字型や整数型などの汎整数型の場合、型が、int より小さな場合(char, signed char, unsigned char, short, unsigned short)は、演算の最初に int か、表現できなければunsigned int に変換されます。このとき、符号を含めてその値を変えることはありません。 (例)short a = 30000, b = 30000; printf("sizeof(a) = %d\n", siz

  • Macでnasm(アセンブラ)を使う - yaotti's diary

    MacでCファイルとアセンブリをリンクして,実行する方法. 用意するもの foo.asm アセンブリを書いたファイル GLOBAL _foo _foo: push ebp mov ebp, esp sub esp, 4 mov eax, [ebp+8] imul eax, [ebp+8] mov [ebp-4], eax mov eax, [ebp-4] add eax, 2 mov esp, ebp pop ebp ret *1 これはCで書くと以下と同じ. int foo(int x) { int y = x * x; return y + 2; } main.c Cのソースコード #include <stdio.h> main() { printf("%d\n", foo(3)); } 以上.nasmは元々入っているはず. 実行手順 $ nasm -f macho foo.nasm

    Macでnasm(アセンブラ)を使う - yaotti's diary
  • 1