[assembly] タグが付いた質問
37 件の質問
2
票
0
回答
139
閲覧数
x86_64 MinGW-w64 assembly での .seh_handlerdata ディレクティブの詳細について知りたい
Windows x64にて後述のコードをアセンブリにコンパイルすると、SEH(構造化例外処理)に対応したアセンブリが出力されるのですが、 .seh_ 関連のデ���レクティブ(特に .seh_handlerdata )についての説明が見つかりません。
以下のページで凡そのseh関連のディレクティブはある程度理解しましたが、 .seh_handlerdata ...
2
票
4
回答
935
閲覧数
アセンブラで呼び出したCの関数から戻り値を取得する方法
nasmとgccを用いてアセンブラを勉強中です
動作環境はWindows11です
Cとアセンブラを連携するため、以下のコードを書きました
;Asm.asm
bits 64
extern print
section .data
message: db "Success", 10
section .text
global Test
Test:
mov rcx,...
0
票
2
回答
496
閲覧数
ラズベリーパイでアセンブリをアセンブルしようとするとエラーが出る
ラズベリーパイでアセンブリをアセンブルしようとすると色々エラーが出てしまうのですが、なぜでしょうか。
ラズパイの環境
モデル:Raspberry Pi Model B Plus Rev 1.2
OS: Linux
test.s
.intel_syntax noprefix
.globl main
main:
mov rax, 42
ret
コマンド
ras@raspberrypi:~/...
1
票
1
回答
301
閲覧数
x86 intel syntax のアセンブリにおけるグローバル変数への代入方法がわかりません。
x86 の intel syntax にて、グローバル変数の値には [rip+a] でアクセスできるのですが、mov [rip+a], 4 のように、グローバル変数のアドレスへ新しい値を代入しようとすると、Segmentation Fault が発生します。他のレジスタの操作と同様にできると思い上記のように書こうとしていたのですが、それではダメなようで。
Segmentation Fault ...
-5
票
2
回答
332
閲覧数
アセンブリ言語のプログラムを教えてほしいです。できれば、プログラムを作ってほしいです。
以下のコードを参考にして、7個の数字を A:1, B:2, C:10, D:8, E:10, F:5, G:6 として、A × B × C × D + E × F × G を計算するプログラムを教えてください。
結果は、460になります。
AxB+CxDを計算するプログラム
SAMPLE START
LD GR0,A
LD GR1,B
CALL MUL
...
1
票
2
回答
401
閲覧数
x86では、ワードサイズより大きいアライメントされていないデータを読み出す場合、メモリアクセス回数は増えますか?
実行環境
CPU ryzen 5 3600
OS windows10 64bit上のvirtual boxでUbuntu 18.04.5 LTSを起動
アセンブラ nasm
オプション -f elf64
コンパイラ clang
オプション -O0
8バイトにアライメントされていないchar *型を整数型にキャストした時エラーが起きないのはなぜですか?
過去の質問↑...
0
票
1
回答
319
閲覧数
BIOSのプログラムでINT 0x13などでフロッピーディスクなどを操作できますが、USBのデータを読み書きするものは無いのですか?
BIOSのプログラムでINT 0x13などでフロッピーディスクなどを操作できますが、USBのデータを読み書きするものは無いのですか?
0
票
1
回答
184
閲覧数
mips assembly で文字列中のあるパターンの出現を調べる
以下は,文字列中のあるパターンの出現を調べるプログラムである.18 行目の End はプログラムの終了を表すものとする.
• 入力は,それぞれ char 型の配列 Pat(ベースアドレス$s0) と,Str(ベースアドレス$s1) に与えられる.両方の文字列の終端には NULL 文字 (\0,ASCII コード 0) が置かれている.
• 文字列 Str にパターン Pat が出現する都度,...
0
票
0
回答
288
閲覧数
mips で 点数を求める配列に格納
MIPS プログラムを用いて,試験の成績データを解析することを考える.受験者数を X とし,配列 A[0] からA[X-1] に各受験者の点数が整数値(0~ 100)で格納されているとする.このとき,Hist[0] から Hist[9] に,それぞれ,0 ∼ 10 点,11 ∼ 20 点,21 ∼ 30 点, . . . , 91 ∼ 100 点 をとった学生の人数が格納されるようにしたい.配列 ...
0
票
1
回答
581
閲覧数
C言語からアセンブリ言語に書き出した時の計算量について
前提と質問内容
(前提)3x3の正方行列の掛け算を行うプログラムをC言語で書き、
compiler explorerというC言語のアセンブラ出力を確認できるページで
x86-64 icc 19.0.1とMIPS gcc 5.4のアセンブリ言語に出力しました。
(質問)内側のループにおける代入文とフロー制御の命令回数と、...
0
票
0
回答
209
閲覧数
MIPSアセンブラを使用して書かれた整数の加算/減算を計算することができる計算機プログラムについてのmipsプログラムコードno結果が正しくない
MIPSアセンブラを使用して書かれた整数の加算/減算を計算することができる計算機プログラムについてのmipsプログラムコードを完成しようとしている
これをデバッグするのに苦労している、結果が正しくない
入力は式の形で式char(ベースアドレス$ s0)の配列に与えられます。
ヌル文字(¥0、ASCIIコード0)が末尾に配置されます。計算結果はレジスタ$ s1に保存され、...
0
票
1
回答
3,147
閲覧数
Linuxのx64(amd64)でのlea命令の意味
アセンブラについて学習しているのですが下記のような命令が出てきます。
これはどういう処理なのでしょうか?
leaがアドレスの値(内容ではない)をレジスタに書き込む命令であることはわかります。
最初の(%rdi,%rcx,1)の部分でなぜこれでレジスタを指定できるのかがわかりません。
OS: Linux
Arch: x64(amd64)
lea (%rdi,%rcx,1),%eax
0
票
1
回答
215
閲覧数
IA-32でコンテキストスイッチをする方法
現在、OS自作入門をベースにOSの開発、学習をしています。
マルチタスクを実装しようと試みているのですがうまくいきません。
OS自作本とは少し設計が違うせいか同じ実装では出来ませんでした。
Web上にあるOS開発のチュートリアルなども参考にしてますがチュートリアルごとに実装が異なるため余計に混乱しています。
ページング機能が有効な場合とそうでない場合、...
0
票
1
回答
244
閲覧数
ブートローダーの作成方法について
現在、オペレーティングシステムの開発をしています。
これまでこの質問に対する回答で記述されているブートローダーを使用して開発を進めてきました。
しかし、このブートローダーはメモリマップの0x9000にカーネルをロードしています。
これだと0x9000~0xA0000までしかメモリを使用することができません。
開発中のカーネルはこのメモリサイズを超えてしまったため、起動できなくなってしまいました。
...
1
票
2
回答
477
閲覧数
OSのイメージファイルの作成方法が分からない
現在、Linux上でOS開発をしようと考えています。
http://www.brokenthorn.com/Resources/OSDev11.html
上記のサイトの下にあるDOWNLOAD DEMO HEREでソースコードをダウンロードし、コンパイルすることはできますがバイナリファイルを連結してQEMUで起動することができません。
...