質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

Q&A

1回答

431閲覧

UEFIアプリをコンパイルするときエラーが起きる

rihitosan

総合スコア11

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

0グッド

0クリップ

投稿2022/07/23 15:44

前提

C言語でUEFIアプリを作っている。

実現したいこと

・UEFIアプリで変数aの番地を表示する。

発生している問題・エラーメッセージ

コンパイル時にx86_64-w64-mingw32でエラー発生

/usr/bin/x86_64-w64-mingw32-ld: /tmp/ccvzH9h3.o:main.c:(.text+0xe1): undefined reference to `___chkstk_ms' collect2: error: ld returned 1 exit status

該当のソースコード

C

1#define EFIAPI 2#define IN 3 4typedef unsigned long long UINTN; 5typedef UINTN EFI_STATUS; 6typedef short CHAR16; 7typedef void * EFI_HANDLE; 8 9typedef 10EFI_STATUS 11(EFIAPI *EFI_TEXT_STRING)( 12 IN struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, 13 IN CHAR16 *String 14); 15 16typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { 17 char buf1[8]; /*EFI_TEXT_RESET Reset; */ 18 19 EFI_TEXT_STRING OutputString; 20 char buf2[8]; /*EFI_TEXT_TEST_STRING TestString; */ 21 22 char buf3[8]; /*EFI_TEXT_QUERY_MODE QueryMode; */ 23 char buf4[8]; /*EFI_TEXT_SET_MODE SetMode; */ 24 char buf5[8]; /*EFI_TEXT_SET_ATTRIBUTE SetAttribute; */ 25 26 char buf6[8]; /*EFI_TEXT_CLEAR_SCREEN ClearScreen; */ 27 char buf7[8]; /*EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; */ 28 char buf8[8]; /*EFI_TEXT_ENABLE_CURSOR EnableCursor; */ 29 30 char buf9[8]; /*SIMPLE_TEXT_OUTPUT_MODE *Mode; */ 31} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; 32 33typedef struct { 34 char buf1[24]; /* EFI_TABLE_HEADER Hdr; */ 35 36 char buf2[8]; /* CHAR16 *FirmwareVendor; */ 37 char buf3[4]; /* UINT32 FirmwareRevision; */ 38 39 char buf4[8]; /* EFI_HANDLE ConsoleInHandle; */ 40 char buf5[8]; /* EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; */ 41 42 char buf6[8]; /* EFI_HANDLE ConsoleOutHandle; */ 43 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; 44 45 char buf7[8]; /* EFI_HANDLE StandardErrorHandle; */ 46 char buf8[8]; /* EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr; */ 47 48 char buf9[8]; /* EFI_RUNTIME_SERVICES *RuntimeServices; */ 49 char buf10[8]; /* EFI_BOOT_SERVICES *BootServices; */ 50 51 char buf11[8]; /* UINTN NumberOfTableEntries;*/ 52 char buf12[8]; /* EFI_CONFIGURATION_TABLE *ConfigurationTable; */ 53} EFI_SYSTEM_TABLE; 54 55 56EFI_STATUS 57efi_main ( 58 IN EFI_HANDLE ImageHandle, 59 IN EFI_SYSTEM_TABLE *SystemTable 60) { 61 62 short unsigned int *a = L"hogefuga"; 63 64 short unsigned int tmpstr[30]; 65 66 int dig_num = 0; 67 68 int memo = &a; 69 70 int dig = 10; 71 72 int i = 0; 73 74 while(1){ 75 76 if(memo == 0){ 77 break; 78 }else 79 if(memo % dig != 0){ 80 memo -= dig/10; 81 82 dig_num += 1; 83 } 84 if(memo % dig == 0){ 85 86 tmpstr[i] = dig_num; 87 88 dig_num = 0; 89 90 dig = dig * 10; 91 92 i++; 93 } 94 95 } 96 97 short unsigned int outstr[i+1]; 98 99 outstr[i+1] = '\0'; 100 101 for(int j = 0;j < i;j++){ 102 outstr[i-j-1] = tmpstr[j]+48; 103 } 104 105 SystemTable->ConOut->OutputString(SystemTable->ConOut, outstr); 106 107 while (1); 108}

コンパイルコマンド

x86_64-w64-mingw32-gcc -Wall -Wextra -nostdinc -nostdlib -Wl,--subsystem,10 -e efi_main -o main.efi main.c

補足情報(FW/ツールのバージョンなど)

Ubuntu
x86_64-w64-mingw32-gcc 9.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

投稿2022/07/23 21:17

RiaFeed

総合スコア2701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問